Main requirements:

1) You need a functional mlockall, otherwise the program will be less
reliable.  AIX has plock - that works fine too.  These are used to
prevent swapping and paging.  Also, AIX has an mlockall that always
returns an error, and DragonFlyBSD has an mlockall that does nothing
but always returns a success status - so that's something to watch out
for.

2) You need a way of rebooting without sync'ing, and without exec'ing
another program.  You can often find this in /usr/include/reboot.h,
/usr/include/sys/reboot.h, and/or /usr/include/linux/reboot.h.  This is
needed to decrease dependency on hard disk function still further.

3) You need a decent source of entropy, especially /dev/urandom,
/dev/random, or prngd (egd probably works too).  In the case of prngd
(and perhaps egd also), prngd must be running on a TCP socket -
fallback-reboot does not use /dev/egd-pool or similar.  The default
for fallback-reboot's expectation of prngd, is that it will be on
tcp/708.

4) Having a functional sigaction helps matters, but you could #ifdef
that away if needed, or use a different signal API.  sigaction()'s
used for making the daemon reread /.fallback-reboot-passwd