Print this page
XXX Rearchitect and replace interrupt distribution

*** 81,90 **** --- 81,91 ---- /* well known processes */ proc_t *proc_sched; /* memory scheduler */ proc_t *proc_init; /* init */ proc_t *proc_pageout; /* pageout daemon */ proc_t *proc_fsflush; /* fsflush daemon */ + proc_t *proc_intrd; /* interrupt daemon */ pgcnt_t maxmem; /* Maximum available memory in pages. */ pgcnt_t freemem; /* Current available memory in pages. */ int interrupts_unleashed; /* set when we do the first spl0() */
*** 357,366 **** --- 358,368 ---- { proc_t *p = ttoproc(curthread); /* &p0 */ int (**initptr)(); extern void sched(); extern void fsflush(); + extern void intrd(); extern int (*init_tbl[])(); extern int (*mp_init_tbl[])(); extern id_t syscid, defaultcid; extern int swaploaded; extern int netboot;
*** 616,625 **** --- 618,631 ---- /* create fsflush daemon */ if (newproc(fsflush, NULL, syscid, minclsyspri, NULL, FAMOUS_PID_FSFLUSH)) panic("main: unable to fork fsflush()"); + /* create interrupt balancer daemon */ + if (newproc(intrd, NULL, syscid, minclsyspri, NULL, 0)) + panic("main: unable to fork intrd()"); + /* create cluster process if we're a member of one */ if (cluster_bootflags & CLUSTER_BOOTED) { if (newproc(cluster_wrapper, NULL, syscid, minclsyspri, NULL, 0)) { panic("main: unable to fork cluster()");