Patent ID: 8234431

Claim:
A method for handling interrupts within a multi-core processor having a plurality of processor cores, the method comprising: initializing a core interrupt mask to specify each of the plurality of processor cores as either an available processor core or an unavailable processor core based on a status associated with each of the plurality of processor cores; setting the core interrupt mask to specify one or more of the plurality of processor cores as unavailable processor cores based on one or more setting criteria; receiving an interrupt associated with an interrupt service routine; evaluating the core interrupt mask to identify one or more available processor cores from the plurality of processor cores; and assigning the interrupt service routine associated with the received interrupt to at least one of the one or more available processor cores; wherein setting the core interrupt mask to specify one or more of the plurality of processor cores as unavailable processor cores based on one or more setting criteria comprises at least one of setting the core interrupt mask to specify a first one or more of the plurality of processor cores as unavailable processor cores when one or more respective caches associated with the first one or more of the plurality of processor cores contain a significant amount of data, setting the core interrupt mask to specify a second one or more of the plurality of processor cores as unavailable processor cores when the second one or more of the plurality of processor cores are positioned in physical proximity to one or more respective buses, setting the core interrupt mask to specify a third one or more of the plurality of processor cores as unavailable processor cores when the third one or more of the plurality of processor cores cooperate with each other, or setting the core interrupt mask to specify a fourth one or more of the plurality of processor cores as unavailable processor cores when the fourth one or more of the plurality of processor cores begin executing a task.