diff options
author | kib <kib@FreeBSD.org> | 2017-05-20 16:12:44 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2017-05-20 16:12:44 +0000 |
commit | f954c5056d909af5d65546fe9bce8951fdae0b70 (patch) | |
tree | 6e26ea5d1ee32f63a09c90b6e14accc3eac6e847 /lib/libefivar/FreeBSD-update | |
parent | 78abf039aa297d9b0021f82c669f194c4bfc611e (diff) | |
download | FreeBSD-src-f954c5056d909af5d65546fe9bce8951fdae0b70.zip FreeBSD-src-f954c5056d909af5d65546fe9bce8951fdae0b70.tar.gz |
MFC efivar(8) (by imp):
List of revisions merged:
r307070
r307071
r307072
r307074
r307189
r307224
r307339
r307390
r307391
r309776
r314231
r314232
r314615
r314616
r314617
r314618
r314619
r314620
r314621
r314623
r314890
r314925
r314926
r314927
r314928
r315770
r315771
Discussed with: gjb (re), imp
Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'lib/libefivar/FreeBSD-update')
-rw-r--r-- | lib/libefivar/FreeBSD-update | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/libefivar/FreeBSD-update b/lib/libefivar/FreeBSD-update new file mode 100644 index 0000000..8b45dce --- /dev/null +++ b/lib/libefivar/FreeBSD-update @@ -0,0 +1,39 @@ +$FreeBSD$ + +For the printing and parsing functionalit, we use the Tianocore routines directly. + +efivar-dp-format.c is a copy of MdePkg/Library/UefiDevicePathLib/DevicePathToText.c +efivar-dp-parse.c is a copy of MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c + +These files are first mechnaically processed with + +sed -e "s/L'/'/;"'s/L"/"/g;s/%g/%36s/g;s/%a/%s/g;s/^VOID/static VOID/g;s/ *$//g' + +for several reasons. We're moving from wide rotuines to narrow +routines. The UTC-2 this code is written for is a bad match for +wchar_t which is an int. It's a much better match for plain narrow +characters on FreeBSD. So we pretend that CHAR16 for these files is +really char * (ASCII). + +Next, we have have to convert the Unicode printf that this code +expects to FreeBSD's printf. %g means "Print the GUID" and %a means +"print the ASCII string." so we mechanically convert them. Once we've +done that we can compare efivar-dp-*.c to its source to see what's +changed. Because we go through this indirection, I've done that +outside of svn. To upgrade you have to do these files by hand. You +have to go through and make routines static. + +uefi-*.[ch] are internal routines to support this. They've been copied +from EDK2 as well, but in a more hap-hazard manner. This was a trade +off between ease of implementation / upgrade vs pulling in too much +since less than half of any file was needed. + +efi-osdep.h shims the EDK2 types to FreeBSD's types. It's included by +ProcessorBind.h which EDK2 uses to define the CPU. We keep it separate +from uefi-dplib.h to allow better sharing. + +uefi-dplib.h shims the EDK2 routines that are needed to FreeBSD's +routines. This is relatively easy since we map all the UCS-2 routines +to simple char * routines. + +RESIST THE URGE TO CLEAN UP THESE FILES. |