MAC_ALLOC(9F) Kernel Functions for Drivers MAC_ALLOC(9F)
NAME
mac_alloc,
mac_free - allocate and free mac registration structures
SYNOPSIS
#include <sys/mac_provider.h> mac_register_t * mac_alloc(
uint_t mac_version);
void mac_free(
mac_register_t *mregp);
INTERFACE LEVEL
illumos DDI specific
PARAMETERS
mac_version An integer corresponding to the version of the MAC interface
that the device driver was built against.
mregp A pointer to an allocated mac_register_t structure that was
obtained from calling the
mac_alloc() function.
DESCRIPTION
The
mac_alloc() and
mac_free() routines are used to allocate and free the
structures used to register a device driver with
mac(9E). The device
driver should call
mac_alloc() with the value of MAC_VERSION to indicate
the current version of the MAC framework that it supports. The device
driver will be returned an instance of a
mac_register(9S) structure which
it can then use to call
mac_register(9F). For more information on the
order of events, see the
Initializing MAC Support section of
mac(9E).
When the driver is done with the
mac_register(9S) structure, it must call
the
mac_free() function to release any memory associated with the handle.
After the driver has called
mac_register(9F) during its
attach(9E) entry
point, the
mac_register(9S) structure is no longer needed and can be freed.
CONTEXT
The
mac_alloc() and
mac_free() routines are generally called from the
context of a device driver's
attach(9E) entry point; however, they may be
called from both
user and
kernel context.
RETURN VALUES
Upon successful completion, the
mac_alloc() function will return a pointer
to an allocated
mac_register_t structure that can be filled in by the
driver. Otherwise, NULL is returned to indicate that the structure could
not be allocated. The most common cause for this is that the value of
mac_version is not supported by the kernel.
SEE ALSO
attach(9E),
mac(9E),
mac_register(9F),
mac_register(9S)OmniOS July 22, 2019 OmniOS