SYNOPSIS
        #include <sys/driver_hooks.h>

        set_driver_hook(H_LOAD_UIDS, value)

        <value> being:

          mixed <closure> (string objectname)

DESCRIPTION
        Mandatory hooks to determine the uid and euid of loaded or
        cloned objects.  Hook settings can be any closure.

        When an object is newly loaded, the H_LOAD_UIDS hook is called
        with the object name as argument.  The new object already
        exists, but has 0 uids.

        For the result, the following possibilities exist (<num> is
        a non-zero number, <no-string> is anything but a string):

           "<uid>"                    -> uid = "<uid>", euid = "<uid>"
           ({ "<uid>", "<euid>" })    -> uid = "<uid>", euid = "<euid>"
           ({ "<uid>", <no-string> }) -> uid = "<uid>", euid = 0

        If strict-euids is not active, the following results are
        possible, too:

           <num>                      -> uid = 0, euid = 0
           ({ <num>, "<euid>" })      -> uid = 0, euid = "<euid>"
           ({ <num>, <no-string> })   -> uid = 0, euid = 0

HISTORY

SEE ALSO
        hooks(C), uids(C), clone_uids(H)
