From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR02-AM5-obe.outbound.protection.outlook.com (EUR02-AM5-obe.outbound.protection.outlook.com [40.92.67.77]) by mx.groups.io with SMTP id smtpd.web11.21539.1574173187120809367 for ; Tue, 19 Nov 2019 06:19:48 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@outlook.com header.s=selector1 header.b=g9yrzvjy; spf=pass (domain: outlook.com, ip: 40.92.67.77, mailfrom: kilian_kegel@outlook.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PcyJmjTkSTzfbWAUYEVXMpkABKGFMM43G/IeY6+31LjmW3oQdw81XeZAG1WzbzCbZkCDz7H/qjavT4QWvzjZ7hlSPY4jjtSCjAhTQOsHHMl6w1j41Cuzs2+1Y/t8ScFyM26lr5HGfhdHxH8S9MU4RUsjnkGP7gkyB07C1mqRvuy8qO1dHnQ7289O6TP1/UmtL2Njaf2ux1ru0l6UR40GCMBTelw04aYtLiL5vcCikCYnBPlUu18iZ6UJNkkoiSu0NlWGX18g/e6xGPj2+xkEXgWN4nRGH6Ys8wIwPIqnE05jAHc178zVkcyhGRYBSY4jXCj20IGpF+1p6M0Ohmd/ww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ruoIa4JVUomPxA9ZJcImZfLze7bXi/c3xE7HjPTWc0A=; b=ABMW5lwMbbc5l5vD0oBHPAHFrRFl+sUnrTMS4N/ZFO1URhgQVJMMK/N+hY1/o7ZPBWe+6M9IWrKASJRiM0rE2z8XqSUpDsbR9sWpMn121g1hGQSzCfQzjU3JzAKOQ6esUoIlZ3aQFDFSI3jozTjYj204FwKm2wygKtaVJ1YVKGxkr4q+uZ0FYwmcvIWL0Ld2NVRPrLSXQ81t9MtI5TTMk2yVSXt56Mn0S9Uq+If0olTArPxXQB4hFo4Bl7bsSAR16hxEcgUbfr+UlhFutFuON8JExT2SSqqOH4DiHUIL3P+kC6qiOTle8Krve5lgT+ZFZfQSuq4AshWuKFno+1gHHg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ruoIa4JVUomPxA9ZJcImZfLze7bXi/c3xE7HjPTWc0A=; b=g9yrzvjyzTWxHEWpDEGtAHNfR7X4dOH43Gr9j+SqOzCaDUSZlsnnoJGkrrO5ZZRxEqJp/jKi9RnHy55VUQKpODjySCcmmOj8gs9G7YqfX1OQBQbYvNXDRmcxrHMIDMkWGF9MzwBj2NSDzbKAoxOHg9dC33uqnBY5zXs+TUA0/R9mXe3p0FCfh+ipDIaloQ3fUov7CzI10BAAVuzGAC7T8Dvbi6SULA37nE6aWOQtNaNxHpqWSHHLv0lH96PVR4o0CFLXbMpdqGA7pXOnvbHIPHkgVyxJas98cjdAwVi1yxjqgVtQ5tdIbVMWXG+d8vzb+4QPaa5GpP0DgP7lsELGhw== Received: from VE1EUR02FT046.eop-EUR02.prod.protection.outlook.com (10.152.12.57) by VE1EUR02HT110.eop-EUR02.prod.protection.outlook.com (10.152.13.189) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.2451.23; Tue, 19 Nov 2019 14:19:43 +0000 Received: from VI1PR0502MB3968.eurprd05.prod.outlook.com (10.152.12.59) by VE1EUR02FT046.mail.protection.outlook.com (10.152.12.247) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.2451.23 via Frontend Transport; Tue, 19 Nov 2019 14:19:43 +0000 Received: from VI1PR0502MB3968.eurprd05.prod.outlook.com ([fe80::4408:c7c7:aaa3:2a91]) by VI1PR0502MB3968.eurprd05.prod.outlook.com ([fe80::4408:c7c7:aaa3:2a91%7]) with mapi id 15.20.2451.029; Tue, 19 Nov 2019 14:19:43 +0000 From: "Kilian Kegel" To: "devel@edk2.groups.io" CC: "Kinney, Michael D" , "Richardson, Brian" Subject: [staging/branch]: CdePkg - added unit test for remaining STRING.H functions - memcpy(), memmove(), strcpy(), strncpy(), strcat(), strncat(), memcmp(), strcmp(), strncmp(), memchr(), strchr(), strcspn(), strpbrk(), strrchr(), strspn(), strstr() etc... Thread-Topic: [staging/branch]: CdePkg - added unit test for remaining STRING.H functions - memcpy(), memmove(), strcpy(), strncpy(), strcat(), strncat(), memcmp(), strcmp(), strncmp(), memchr(), strchr(), strcspn(), strpbrk(), strrchr(), strspn(), strstr() etc... Thread-Index: AQHVnuRj9T72Ftt6mE+7G7LUhTv1+Q== Date: Tue, 19 Nov 2019 14:19:43 +0000 Message-ID: References: <15D05F40761233FD.22068@groups.io>,<15D538D913DB9115.9779@groups.io>,<15D630F5419FB939.1274@groups.io> In-Reply-To: <15D630F5419FB939.1274@groups.io> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-incomingtopheadermarker: OriginalChecksum:28EDAAD853083FEAE326DA821BABCDBA5A70627F1BF90CFA1446DD8F6FDF2B44;UpperCasedChecksum:14C74246A234D26367391CDB990DC2B5D85D89744FFC01E8159916D92E5000FA;SizeAsReceived:7446;Count:45 x-tmn: [DQCbYb/wSnNlxiaj+qaDfy9FgmCne5JY] x-ms-publictraffictype: Email x-incomingheadercount: 45 x-eopattributedmessage: 0 x-ms-office365-filtering-correlation-id: 0f083c9d-4f31-471f-308e-08d76cfb85e5 x-ms-traffictypediagnostic: VE1EUR02HT110: x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 008bY4wJFcfPnGm58fOwGuhpPXTD5qWqu5YfxFsbtBLD2p+OttnGakaMmFKIrbXlfqbBVSq7hMVu9QGeAjDXWeYljhOlFVcAGixKMP4wSu3w8QU3CSyFcC7CzVcCvkuv95fDoG19kLEuJvJt3A22+9NJV6GmgxFQ/3fLMvSXKnE4WjZPf7lsvuYvJcGYs548 x-ms-exchange-transport-forked: True MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 0f083c9d-4f31-471f-308e-08d76cfb85e5 X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Nov 2019 14:19:43.4725 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1EUR02HT110 Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_VI1PR0502MB39689050502226E9F1308BFDEB4C0VI1PR0502MB3968_" --_000_VI1PR0502MB39689050502226E9F1308BFDEB4C0VI1PR0502MB3968_ Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable Hi UEFI community, I=92d like to inform you about an update in the CdePkg branch of edk2-sta= ging. https://github.com/tianocore/edk2-staging/tree/CdePkg#cdepkg The goal of the CdePkg is to provide an ANSI C Interface for UEFI POST dri= vers, that enables BIOS engineers to (more) easily port standard C programs or l= ibraries (e.g. the openSSL library, already done) to POST drivers. Furthermore the ANSI C Interface is disseminated widely, also it=92s bugs = and pitfalls are known very well by a broad range of IT professionals and may help to be better supportable= by the open source initiative compared to the proprietary interface that is available today in Tianocore= UEFI. Now 20 new ANSI C functions memcpy(), memmove(), strcpy(), strncpy(), strc= at(), strncat(), memcmp(), strcmp(), strncmp(), memchr(), strchr(), strcspn(), strpbrk(), strrchr(), strspn(), strstr(), strtoc(), memset(), strerror() and strlen() are introduced for PEI and DXE. Currently there are 6 examples implemented: 1. argvc: https://github.com/tianocore/edk2-staging/blob/CdePkg/CdeVali= dationPkg/HOSTED_ENV/argcv/main.c#L57 argc/argv handling according to https://msdn.microsoft.com/en-us/library/a= 1y7w461.aspx 1. systeminterfacePEI: https://github.com/tianocore/edk2-staging/blob/C= dePkg/CdeValidationPkg/SYSTEM_IF/systeminterfacePEI/main.c#L57 demonstration, how PeiServices and FileHandle are passed into main() 1. systeminterfaceDXE: https://github.com/tianocore/edk2-staging/blob/C= dePkg/CdeValidationPkg/SYSTEM_IF/systeminterfaceDXE/main.c#L57 demonstration, how SystemTable and ImageHandle are passed into main() ANSI C LIBRARY functions: 1. time.h clock(): https://github.com/tianocore/edk2-staging/blob/CdePk= g/CdeValidationPkg/TIME_H/clock/main.c#L1 for PEI and DXE phase. It provides TSC based, millisecond precise, exact a= nd chipset independent clock() function. NOTE: in emulation mode the TSC nominal frequency is supposed to be 1GHz https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/clock?vie= w=3Dvs-2019 1. time.h difftime(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/difftime-= difftime32-difftime64?view=3Dvs-2019 time.h mktime(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/mktime-mk= time32-mktime64?view=3Dvs-2019<%20https:/docs.microsoft.com/en-us/cpp/c-run= time-library/reference/mktime-mktime32-mktime64?view=3Dvs-2019> time.h time(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/time-time= 32-time64?view=3Dvs-2019<%20https:/docs.microsoft.com/en-us/cpp/c-runtime-l= ibrary/reference/time-time32-time64?view=3Dvs-2019> time.h asctime(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/asctime-w= asctime?view=3Dvs-2019 time.h ctime(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/ctime-cti= me32-ctime64-wctime-wctime32-wctime64?view=3Dvs-2019 time.h gmtime(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/gmtime-gm= time32-gmtime64?view=3Dvs-2019 time.h localtime(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/localtime= -localtime32-localtime64?view=3Dvs-2019 time.h strftime(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strftime-= wcsftime-strftime-l-wcsftime-l?view=3Dvs-2019 NOTE: All TIME.H functions support UTC only. All functions are tested in one single driver PEI/DXE: https://github.com/= tianocore/edk2-staging/blob/CdePkg/CdeValidationPkg/TIME_H/timehfunctions/m= ain.c#L52 1. NEW: STRING.H memcpy(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/memcpy-wm= emcpy?view=3Dvs-2019 NEW: STRING.H memmove(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/memmove-w= memmove?view=3Dvs-2019 NEW: STRING.H strcpy(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strcpy-wc= scpy-mbscpy?view=3Dvs-2019 NEW: STRING.H strncpy(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strncpy-s= trncpy-l-wcsncpy-wcsncpy-l-mbsncpy-mbsncpy-l?view=3Dvs-2019 NEW: STRING.H strcat(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strcat-wc= scat-mbscat?view=3Dvs-2019 NEW: STRING.H strncat(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strncat-s= trncat-l-wcsncat-wcsncat-l-mbsncat-mbsncat-l?view=3Dvs-2019 NEW: STRING.H memcmp(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/memcmp-wm= emcmp?view=3Dvs-2019 NEW: STRING.H strcmp(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strcmp-wc= scmp-mbscmp?view=3Dvs-2019 NEW: STRING.H strncmp(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strncmp-w= csncmp-mbsncmp-mbsncmp-l?view=3Dvs-2019 NEW: STRING.H memchr(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/memchr-wm= emchr?view=3Dvs-2019 NEW: STRING.H strchr(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strchr-wc= schr-mbschr-mbschr-l?view=3Dvs-2019 NEW: STRING.H strcspn(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strcspn-w= cscspn-mbscspn-mbscspn-l?view=3Dvs-2019 NEW: STRING.H strpbrk(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strpbrk-w= cspbrk-mbspbrk-mbspbrk-l?view=3Dvs-2019 NEW: STRING.H strrchr(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strrchr-w= csrchr-mbsrchr-mbsrchr-l?view=3Dvs-2019 NEW: STRING.H strspn(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strspn-wc= sspn-mbsspn-mbsspn-l?view=3Dvs-2019 NEW: STRING.H strstr(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strtok-st= rtok-l-wcstok-wcstok-l-mbstok-mbstok-l?view=3Dvs-2019 NEW: STRING.H strtok(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strtok-st= rtok-l-wcstok-wcstok-l-mbstok-mbstok-l?view=3Dvs-2019 NEW: STRING.H memset(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/memset-wm= emset?view=3Dvs-2019 NEW: STRING.H strerror(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strerror-= strerror-wcserror-wcserror?view=3Dvs-2019 NEW: STRING.H strlen(): https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strlen-wc= slen-mbslen-mbslen-l-mbstrlen-mbstrlen-l?view=3Dvs-2019 NOTE: All STRING.H functions are completely available in PEI and DXE, exce= pt strcoll() and strxftm() All functions are tested in one single driver PEI/DXE: https://github.com/= tianocore/edk2-staging/blob/CdePkg/CdeValidationPkg/STRING_H/stringhfunctio= ns/main.c#L52 Best Regards, Kilian From: Kilian Kegel Sent: Wednesday, October 23, 2019 10:03 PM To: devel@edk2.groups.io Cc: Kinney, Michael D; Richardson, Bria= n Subject: [edk2-devel] [staging/branch]: CdePkg - C Development Environment= Package Hi UEFI community, I=92d like to introduce the CdePkg to edk2-staging. Some time ago I decided to write my own ANSI C Library for UEFI Shell and = POST. The UEFI Shell library (=93Torito C Library=94) has been production-ready = for more than one year. The POST version of the library (=93CdeLib=94) is not yet fully tested. I will be demonstrating my verification procedure in the upcoming weeks on= EDK2 STAGING https://github.com/tianocore/edk2-staging/tree/CdePkg Currently there are 3 examples implemented: 1. argvc: https://github.com/tianocore/edk2-staging/blob/CdePkg/CdeVali= dationPkg/HOSTED_ENV/argcv/main.c#L57 argc/argv handling according to https://msdn.microsoft.com/en-us/library/a= 1y7w461.aspx 1. systeminterfacePEI: https://github.com/tianocore/edk2-staging/blob/C= dePkg/CdeValidationPkg/SYSTEM_IF/systeminterfacePEI/main.c#L57 demonstration, how PeiServices and FileHandle are passed into main() 1. systeminterfaceDXE: https://github.com/tianocore/edk2-staging/blob/C= dePkg/CdeValidationPkg/SYSTEM_IF/systeminterfaceDXE/main.c#L57 demonstration, how SystemTable and ImageHandle are passed into main() Upcoming next demonstration will be the clock() function end of this week The idea is to bring the ANSI C Library interface into POST drivers. This will: 1. ease porting tasks 2. allow cross development 3. allow developers to focus on their aims, because they aren=92t force= d to keep in mind a lot of additional info (e.g. RShiftU64) 4. provide all intrisics to allow the compiler to be a =93C compiler=94 (e.g. char buffer[256] =3D { 1 };) What is CdePkg and Torito C Library? * CdePkg and Torito C Library are a one man show / after work party, t= hat is owned and written solely by myself * CdePkg is a reference implementation only for Microsoft C compiler * CdePkg is a feasibility study * CdePkg is the successor of Torito C, based on the same source code * CdePkg C Development Environment is similar to MdePkg Module Develo= pment Environment but guarantees that the C compiler is always fully usable (all intrinsics= available) and the C90/C95 standard library is always available What are the design goals? * to rewrite the whole thing from scratch, without using any public so= urce code from GNU, BSD, Watcom * completeness: full blown C90 + C95 support, as lowest common denomin= ator * tailored for UEFI: small code size, for UEFI-POST-driver uses a C-Li= brary-Driver, that contains core/worker functions for realloc() =3D=3D mal= loc() and free(), entire printf()-family, entire scanf()-family. UEFI-POST-driver just uses small wrapper functions to run the C-Library-Dr= iver code. * stable, exact, chipset independent TSC based clock() with CLOCKS_PER= _SEC =3D=3D 1000 * complete set of the Microsoft C-compiler intrinsic functions * ROM-able! Runs with stack but w/o any static storage duration in .da= ta segment, e.g. for rand(), strtok(), tmpfile() This is required for early PEI before memory sizing, when PEI-images run d= irectly out of flash * Microsoft (bug) compatible (as far as possible) * use original Microsoft header files for UEFI Shell Apps created i= n VS2019 * allow expensive debugging tasks of ANSI C .EFI applications in Vi= sual Studio in its Windows NT counter part * to save my lifetime writing a documentation https://github.com/ti= anocore/edk2-staging/tree/CdePkg/implemented.md#validation-status * all the above in one single C-Library CdeLib.lib CdePkg shall be adjusted to other compilers/tool chains too, once it is fe= ature-complete and accepted by the UEFI community. As long as it is for Microsoft VS2019 only. CdePkg README.md is here: = https://github.com/tianocore/edk2-staging/tree/CdePkg#cdepkg CdePkg HOWTO is here: https://github.com/tianocore/edk2-staging/blob/CdePk= g/README.md#howto CdeValidationPkg README.md is here: https://github.com/tianocore/edk2-stag= ing/blob/CdePkg/CdeValidationPkg/README.md CdeValidationPkg HOWTO is here: https://github.com/tianocore/edk2-staging/= blob/CdePkg/CdeValidationPkg/README.md HOWTO: 1. clone the edk2-staging repository 2. checkout CdePkg 3. run LAUNCH.BAT 4. run build -p EmulatorPkg\EmulatorPkg.dsc -t VS2015x86 -a IA32 5. run DBGEMU.BAT to start emulation (EmulatorPkg) 6. run build -a IA32 -a X64 -n 5 -t VS2015x86 -b DEBUG -p Vlv2TbltDevic= ePkg\PlatformPkgX64.dsc 7. update MinnowBoard with Build/Vlv2TbltDevicePkgX64\DEBUG_VS2015x86\F= V\VLV.fd Best regards, Kilian Kegel --_000_VI1PR0502MB39689050502226E9F1308BFDEB4C0VI1PR0502MB3968_ Content-Type: text/html; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable

Hi UEFI community,=

 

I=92d like to inform yo= u about an update in the CdePkg branch of  edk2-staging.

https://github.com/tianocore/edk2-staging/tree/CdePkg= #cdepkg

 

The goal of the CdeP= kg is to provide an ANSI C Interface for UEFI POST drivers,

that enables BIOS engin= eers to (more) easily port standard C programs or libraries

(e.g. the openSSL libra= ry, already done) to POST drivers.

 

Furthermore the ANSI= C Interface is disseminated widely, also it=92s bugs and pitfalls are known very w= ell

by a broad range of IT professionals and may help t= o be better supportable by the open source initiative

compared to the proprietary interface that is avail= able today in Tianocore UEFI.=

 

Now 20 new ANSI C funct= ions m= emcpy(), memmove(), strcpy(), strncpy(), strcat(), strncat(),

memcmp(), strcmp(), strncmp(), memchr(), strchr(), strcspn()= , strpbrk(),

strrchr(), strspn(), strstr(), strtoc(), memset(), strerror(= ) and strlen()

are introduced for P= EI and DXE.

 

Currently there are 6= examples implemented:

  1. = argvc: https://github.com/tianocor= e/edk2-staging/blob/CdePkg/CdeValidationPkg/HOSTED_ENV/argcv/main.c#L57=

argc/argv handling acco= rding to https://msdn.microsoft.com/en-us/library/a1y7w461.aspx

  1. = systeminterfacePEI: https://github.com/= tianocore/edk2-staging/blob/CdePkg/CdeValidationPkg/SYSTEM_IF/systeminterfa= cePEI/main.c#L57

demonstration, how PeiServices and FileHandle are passed into main()

  1. = systeminterfaceDXE: https://github.com/= tianocore/edk2-staging/blob/CdePkg/CdeValidationPkg/SYSTEM_IF/systeminterfa= ceDXE/main.c#L57

demonstration, how SystemTable= and ImageHandle are passed into main()

 

ANSI C LIBRA= RY functions:

  1. time.h clock(): https://github.com/tianocore/edk2-st= aging/blob/CdePkg/CdeValidationPkg/TIME_H/clock/main.c#L1

for PEI and DXE phase. It provides TSC based= , millisecond precise, exact and chipset independent clock() = function.

NOTE: in em= ulation mode the TSC nominal frequency is supposed to be 1GHz

https://docs.microsof= t.com/en-us/cpp/c-runtime-library/reference/clock?view=3Dvs-2019

  1. time.h  https://docs.microsoft.com/en-us/cpp/c-runt= ime-library/reference/difftime-difftime32-difftime64?view=3Dvs-2019<= /a>

    time.h  = mktime():

    = https://docs.microsoft.com/en-us/cpp/c-runtime-= library/reference/mktime-mktime32-mktime64?view=3Dvs-2019

    time.h ti= me():

    https://docs.microsoft.com/en-us/cpp/c-runtime-librar= y/reference/time-time32-time64?view=3Dvs-2019

    time.h as= ctime():

    https://docs.microsoft.com/en-us/cpp/c-runtime-library/re= ference/asctime-wasctime?view=3Dvs-2019

    time.h  = ctime():

    https://docs.microsoft.com/= en-us/cpp/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32= -wctime64?view=3Dvs-2019<= /span>

    time.h  = gmtime():

    https://docs.microsoft.com/en-us/cpp/c-runtime-li= brary/reference/gmtime-gmtime32-gmtime64?view=3Dvs-2019

    time.h  = localtime():

    https://docs.microsoft.com/en-us/cpp/c-r= untime-library/reference/localtime-localtime32-localtime64?view=3Dvs-2019

    time.h  = strftime():

    https://docs.microsoft.com/en-us/cpp/c-runtime-library/referen= ce/strftime-wcsftime-strftime-l-wcsftime-l?view=3Dvs-2019

    NOTE: All T= IME.H functions support UTC only.

    All functions ar= e tested in one single driver PEI/DXE: https://github.com/tianoco= re/edk2-staging/blob/CdePkg/CdeValidationPkg/TIME_H/timehfunctions/main.c#L= 52

    1. NEW: STRING.H memcpy():

    https://docs= .microsoft.com/en-us/cpp/c-runtime-library/reference/memcpy-wmemcpy?view=3D= vs-2019

    NEW: STRING.H <= /span>memmove():

    https://do= cs.microsoft.com/en-us/cpp/c-runtime-library/reference/memmove-wmemmove?vie= w=3Dvs-2019

    NEW: STRING.H s= trcpy():

    https:= //docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strcpy-wcscpy-mb= scpy?view=3Dvs-2019

    NEW: STRING.H <= /span>strncpy():

    https://docs.microsoft.com/en-us/cpp/c-runtime-l= ibrary/reference/strncpy-strncpy-l-wcsncpy-wcsncpy-l-mbsncpy-mbsncpy-l?view= = =3Dvs-2019

    NEW: STRING.H <= /span>strcat():

    https:= //docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strcat-wcscat-mb= scat?view=3Dvs-2019

    NEW: STRING.H <= /span>strncat():

    https://docs.microsoft.com/en-us/cpp/c-runtime-l= ibrary/reference/strncat-strncat-l-wcsncat-wcsncat-l-mbsncat-mbsncat-l?view= = =3Dvs-2019

    NEW: STRING.H <= /span>memcmp():

    https://docs= .microsoft.com/en-us/cpp/c-runtime-library/reference/memcmp-wmemcmp?view=3D= vs-2019

    NEW: STRING.H <= /span>strcmp():

    https:= //docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strcmp-wcscmp-mb= scmp?view=3Dvs-2019

    NEW: STRING.H <= /span>strncmp():

    https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/str= ncmp-wcsncmp-mbsncmp-mbsncmp-l?view=3Dvs-2019=

    NEW: STRING.H <= /span>memchr():

    https://docs= .microsoft.com/en-us/cpp/c-runtime-library/reference/memchr-wmemchr?view=3D= vs-2019

    NEW: STRING.H <= /span>strchr():

    https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strchr-= wcschr-mbschr-mbschr-l?view=3Dvs-2019

    NEW: STRING.H <= /span>strcspn():

    https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/str= cspn-wcscspn-mbscspn-mbscspn-l?view=3Dvs-2019=

    NEW: STRING.H <= /span>strpbrk():

    https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/str= pbrk-wcspbrk-mbspbrk-mbspbrk-l?view=3Dvs-2019=

    NEW: STRING.H <= /span>strrchr():

    https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/str= rchr-wcsrchr-mbsrchr-mbsrchr-l?view=3Dvs-2019=

    NEW: STRING.H <= /span>strspn():

    https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strspn-= wcsspn-mbsspn-mbsspn-l?view=3Dvs-2019

    NEW: STRING.H <= /span>strstr():

    https://docs.microsoft.com/en-us/cpp/c-runtime-library= /reference/strtok-strtok-l-wcstok-wcstok-l-mbstok-mbstok-l?view=3Dvs-2019

    NEW: STRING.H <= /span>strtok():

    https://docs.microsoft.com/en-us/cpp/c-runtime-library= /reference/strtok-strtok-l-wcstok-wcstok-l-mbstok-mbstok-l?view=3Dvs-2019

    NEW: STRING.H <= /span>memset():

    https://docs= .microsoft.com/en-us/cpp/c-runtime-library/reference/memset-wmemset?view=3D= vs-2019

    NEW: STRING.H <= /span>strerror():

    https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/s= trerror-strerror-wcserror-wcserror?view=3Dvs-2019

    NEW: STRING.H <= /span>strlen():

    https://docs.microsoft.com/en-us/cpp/c-runtime-libra= ry/reference/strlen-wcslen-mbslen-mbslen-l-mbstrlen-mbstrlen-l?view=3Dvs-20= 19

    NOTE: All S= TRING.H functions are completely available in PEI and DXE, except strcoll()= and strxftm()

    All functions ar= e tested in one single driver PEI/DXE: https://github.com/tia= nocore/edk2-staging/blob/CdePkg/CdeValidationPkg/STRING_H/stringhfunctions/= main.c#L52

     

    Best Regards,

    Kilian

     

    From: Kilian Kegel
    Sent: Wednesday, October 23, 2019 10:03 PM
    To: devel@edk2.groups.io
    Cc:
    Kinney, Michael D= ; Richardson, Brian
    Subject: [edk2-devel] [staging/branch]: CdePkg - C Development Envi= ronment Package

     

    Hi UEFI community,=

     

    I=92d like to introduce= the CdePkg to edk2-staging.

     

    Some time ago I decide= d to write my own ANSI C Library for UEFI Shell and POST.=

     

    The UEFI Shell library= (=93Torito C Library=94) has been production-ready for more than one year.=

    The POST version of th= e library (=93CdeLib=94) is not yet fully tested.

     

    I will be demonstratin= g my verification procedure in the upcoming weeks on EDK2 STAGING  h= ttps://github.com/tianocore/edk2-staging/tree/CdePkg

     

    Currently there are 3 examples implemented:

    1. = argvc: https://github.com/tianocor= e/edk2-staging/blob/CdePkg/CdeValidationPkg/HOSTED_ENV/argcv/main.c#L57=

    argc/argv handling acco= rding to https://msdn.microsoft.com/en-us/library/a1y7w461.aspx

    1. = systeminterfacePEI: https://github.com/= tianocore/edk2-staging/blob/CdePkg/CdeValidationPkg/SYSTEM_IF/systeminterfa= cePEI/main.c#L57

    demonstration, how PeiServices and FileHandle are passed into main()

    1. = systeminterfaceDXE: https://github.com/= tianocore/edk2-staging/blob/CdePkg/CdeValidationPkg/SYSTEM_IF/systeminterfa= ceDXE/main.c#L57

    demonstration, how SystemTable= and ImageHandle are passed into main()

     

    Upcoming next demonstr= ation will be the clock() function end of this week

     

    The idea is to bring t= he ANSI C Library interface into POST drivers.

    This will:<= /span>

    1. eas= e porting tasks
    2. allow cross development
    3. allow develo= pers to focus on their aims, because they aren=92t forced to keep in mind a lo= t of additional info (e.g. RShiftU64)
    4. provide all intrisics to allow the compiler to be a =93C compiler=94

    (e.g. char b= uffer[256] =3D { 1 };)

     

    What is CdePkg and Tor= ito C Library?

    • Cde= Pkg and Torito C Library are a one man show / after work party, that is owned and written solely b= y myself
    • CdePkg is a reference implementation only for Microsoft= C compiler
    • CdePkg is a feasibility study
    • CdePkg is t= he successor of Torito C, based on the same source code
    • CdePkg C= Development Environment is similar to  MdePkg Module Development Envi= ronment

    but guarantees  that the C compiler is always fully usable (all i= ntrinsics available) and the C90/C95 standard library is always available

     

    What are the design go= als?

    • to rewrite the whole thing from scratch, without using any public source c= ode from GNU, BSD, Watcom
    • completeness: full blown C90 + C95 support, as lowest common denominat= or
    • tailored for UEFI: small code size, for UEFI-POST-driver uses a C-Library-= Driver, that contains core/worker functions for realloc() =3D=3D  mal= loc() and free()<= /b>,

    entire printf()-family, entire scanf()-family.

    UEFI-POST-driver just uses small wrapper functions to run the C-Librar= y-Driver code.

    • sta= ble, exact, chipset independent TSC based clock()= with CLOCKS_PER_SEC =3D=3D 1000
    • complete set of the M= icrosoft C-compiler intrinsic functions
    • ROM-able! Runs with stack but w/o any static sto= rage duration in .data segment, e.g. for r= and(), strtok(), tmpfile()

    This is require= d for early PEI before memory sizing, when PEI-images run directly out of f= lash

    • Microsoft (bug) compatible (as far as possible)
      1. use original Microsoft header files for UEFI Shell Apps created in VS2019 =
      2. allow expensive debugging tasks of ANSI C .EFI applications in Visual Stud= io in its Windows NT counter part
      3. to save my lifetime writing a documentation https://github.com/tianocore/edk2-staging/tree/CdePkg/implemented.md#valid= ation-status
    • all the above in one single C-Library CdeLib.lib

     

    CdePkg shall be adjusted to other compilers/tool chains = too, once it is feature-complete and accepted by the UEFI community.

    As long as it is f= or Microsoft VS2019 only.

     

    CdePkg README.md is here:   https://github.com/tianoco= re/edk2-staging/tree/CdePkg#cdepkg

    CdePkg HOWTO is here: https://github.com/tianocore/edk2-staging/blob/CdePkg/README.md#how= to

    CdeValidationPkg README.md is here: https://github.com/tianocore/edk= 2-staging/blob/CdePkg/CdeValidationPkg/README.md

    CdeValidationPkg HOWTO is here: https://github.com/tianocore/edk2-staging/blob/CdePkg/CdeValidationPkg/REA= DME.md

     

    HOWTO:

    1. clo= ne the edk2-staging repository
    2. checkout CdePkg
    3. run LAUNCH.BAT
    4. run build -p EmulatorPkg\Emul= atorPkg.dsc -t VS2015x86 -a IA32=
    5. run DBGEMU.BAT to start emulation (EmulatorPkg)
    6. <= li class=3D"xmsonormal" style=3D"mso-list:l1 level1 lfo5">run build -a IA32 -a X64 -n 5 -t VS2015x86 -b DEB= UG -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc=
    7. update MinnowBoard with= Build/Vlv2TbltDevicePkgX64\DEBUG_VS2015x86\FV\VLV.fd

    &nb= sp;

    Best regard= s,

    Kilian Kege= l

     

     

     

     

     

    --_000_VI1PR0502MB39689050502226E9F1308BFDEB4C0VI1PR0502MB3968_--