Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a2a97982 authored by Keith Owens's avatar Keith Owens Committed by Tony Luck
Browse files

[PATCH] MCA/INIT: scheduler hooks



Scheduler hooks to see/change which process is deemed to be on a cpu.

Signed-off-by: default avatarKeith Owens <kaos@sgi.com>
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent 9fe66dfd
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -904,6 +904,8 @@ extern int task_curr(const task_t *p);
extern int idle_cpu(int cpu);
extern int sched_setscheduler(struct task_struct *, int, struct sched_param *);
extern task_t *idle_task(int cpu);
extern task_t *curr_task(int cpu);
extern void set_curr_task(int cpu, task_t *p);

void yield(void);

+26 −0
Original line number Diff line number Diff line
@@ -3576,6 +3576,32 @@ task_t *idle_task(int cpu)
	return cpu_rq(cpu)->idle;
}

/**
 * curr_task - return the current task for a given cpu.
 * @cpu: the processor in question.
 */
task_t *curr_task(int cpu)
{
	return cpu_curr(cpu);
}

/**
 * set_curr_task - set the current task for a given cpu.
 * @cpu: the processor in question.
 * @p: the task pointer to set.
 *
 * Description: This function must only be used when non-maskable interrupts
 * are serviced on a separate stack.  It allows the architecture to switch the
 * notion of the current task on a cpu in a non-blocking manner.  This function
 * must be called with interrupts disabled, the caller must save the original
 * value of the current task (see curr_task() above) and restore that value
 * before reenabling interrupts.
 */
void set_curr_task(int cpu, task_t *p)
{
	cpu_curr(cpu) = p;
}

/**
 * find_process_by_pid - find a process with a matching PID value.
 * @pid: the pid in question.