summaryrefslogtreecommitdiffstats
path: root/lib/libefivar/FreeBSD-update
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2017-05-20 16:12:44 +0000
committerkib <kib@FreeBSD.org>2017-05-20 16:12:44 +0000
commitf954c5056d909af5d65546fe9bce8951fdae0b70 (patch)
tree6e26ea5d1ee32f63a09c90b6e14accc3eac6e847 /lib/libefivar/FreeBSD-update
parent78abf039aa297d9b0021f82c669f194c4bfc611e (diff)
downloadFreeBSD-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-update39
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.
OpenPOWER on IntegriCloud