Print this page
XXX Rearchitect and replace interrupt distribution

*** 85,94 **** --- 85,95 ---- /* 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() */
*** 361,370 **** --- 362,372 ---- { proc_t *p = ttoproc(curthread); /* &p0 */ int (**initptr)(); extern void sched(); extern void fsflush(); + extern void interrupt_balancer(); extern int (*init_tbl[])(); extern int (*mp_init_tbl[])(); extern id_t syscid, defaultcid; extern int swaploaded; extern int netboot;
*** 620,629 **** --- 622,635 ---- /* create fsflush daemon */ if (newproc(fsflush, NULL, syscid, minclsyspri, NULL, FAMOUS_PID_FSFLUSH)) panic("main: unable to fork fsflush()"); + /* create interrupt balancer process */ + if (newproc(interrupt_balancer, NULL, syscid, minclsyspri, NULL, 0)) + panic("main: unable to fork interrupt_balancer()"); + /* 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()");