dt_regset_t * dt_regset_create(ulong_t size) { ulong_t n = BT_BITOUL(size + 1); /* + 1 for %r0 */ dt_regset_t *drp = malloc(sizeof (dt_regset_t)); if (drp == NULL) return (NULL); drp->dr_bitmap = malloc(sizeof (ulong_t) * n); drp->dr_size = size + 1; if (drp->dr_bitmap == NULL) { dt_regset_destroy(drp); return (NULL); } bzero(drp->dr_bitmap, sizeof (ulong_t) * n); return (drp); }
void dt_regset_reset(dt_regset_t *drp) { bzero(drp->dr_bitmap, sizeof (ulong_t) * BT_BITOUL(drp->dr_size)); }
#include <sys/note.h> #include <sys/sunndi.h> #include <sys/fastboot_impl.h> #include <sys/sysevent.h> #include <sys/sysevent/dr.h> #include <sys/sysevent/eventdefs.h> #include <sys/acpi/acpi.h> #include <sys/acpica.h> #include <sys/acpidev.h> #include <sys/acpidev_dr.h> #include <sys/acpinex.h> int acpinex_event_support_remove = 0; static volatile uint_t acpinex_dr_event_cnt = 0; static ulong_t acpinex_object_type_mask[BT_BITOUL(ACPI_TYPE_NS_NODE_MAX + 1)]; /* * Generate DR_REQ event to syseventd. * Please refer to sys/sysevent/dr.h for message definition. */ static int acpinex_event_generate_event(dev_info_t *dip, ACPI_HANDLE hdl, int req, int event, char *objname) { int rv = 0; sysevent_id_t eid; sysevent_value_t evnt_val; sysevent_attr_list_t *evnt_attr_list = NULL; char *attach_pnt; char event_type[32];