0) It's is interesting that this article mentions Maximilian Attems attempt to add a header file to glibc. Because directly after that attempt he submitted the patch that became mainline commit 29a5c67e7a78815fda0567a867adce467f6e6e5a ("kexec: export kexec.h to user space"): https://lkml.org/lkml/2012/5/24/107.
1) As a result of that commit include/uapi/linux/kexec.h now exports a declaration of kexec_load(). But this declaration doesn't come with a matching definition of that function, so it doesn't help much to include kexec.h if one wants to use kexec_load().
2) The patch ended up in the mainline tree without any discussion, as far as I can tell. A previous attempt, two years earlier, did generate discussion but didn't end up in mainline: https://lkml.org/lkml/2010/6/19/106. Note that this earlier attempt didn't export a declaration of kexec_load().
3) I noticed all that because ever since v3.5 (which shipped that commit) the headers_check utility complains about kexec.h:
[...]include/linux/kexec.h:49: userspace cannot reference function or variable defined in the kernel
(This warning isn't entirely correct, of course, as there is no matching definition of kexec_load() in the kernel tree.)
3) To me it seems this declaration of kexec_load() in kexec.h should be dropped. It serves no real purpose. Am I correct?