Print this page
OS-2366 ddi_periodic_add(9F) is entirely rubbish
*** 2243,2260 ****
(void) add_avsoftintr((void *)&softlevel1_hdl, 1, softlevel1,
"softlevel1", NULL, NULL); /* XXX to be moved later */
/*
! * Register these software interrupts for ddi timer.
* Software interrupts up to the level 10 are supported.
*/
for (i = DDI_IPL_1; i <= DDI_IPL_10; i++) {
! char name[sizeof ("timer_softintr") + 2];
! (void) sprintf(name, "timer_softintr%02d", i);
(void) add_avsoftintr((void *)&softlevel_hdl[i-1], i,
! (avfunc)timer_softintr, name, (caddr_t)(uintptr_t)i, NULL);
}
#if !defined(__xpv)
if (modload("drv", "amd_iommu") < 0) {
PRM_POINT("No AMD IOMMU present\n");
--- 2243,2264 ----
(void) add_avsoftintr((void *)&softlevel1_hdl, 1, softlevel1,
"softlevel1", NULL, NULL); /* XXX to be moved later */
/*
! * Register software interrupt handlers for ddi_periodic_add(9F).
* Software interrupts up to the level 10 are supported.
*/
for (i = DDI_IPL_1; i <= DDI_IPL_10; i++) {
! /*
! * The constant string "ddi_periodic", below, is only used to
! * print debugging information. Generating a dynamic string
! * for each soft level is a waste of kernel memory.
! */
(void) add_avsoftintr((void *)&softlevel_hdl[i-1], i,
! (avfunc)ddi_periodic_softintr, "ddi_periodic",
! (caddr_t)(uintptr_t)i, NULL);
}
#if !defined(__xpv)
if (modload("drv", "amd_iommu") < 0) {
PRM_POINT("No AMD IOMMU present\n");