proc.c File Reference
Simple cooperative and preemptive multitasking scheduler.
More...
#include "proc_p.h"
#include "cfg/cfg_proc.h"
#include "cfg/cfg_monitor.h"
#include <cfg/compiler.h>
#include <cpu/types.h>
#include <cpu/irq.h>
#include <kern/proc.h>
#include "cfg/cfg_signal.h"
#include <struct/list.h>
#include <cfg/debug.h>
#include <cpu/frame.h>
#include <cfg/log.h>
#include <cfg/macros.h>
#include <cfg/module.h>
#include <cfg/depend.h>
#include <cpu/attr.h>
#include <string.h>
Go to the source code of this file.
Functions |
| void | proc_init (void) |
| | Initialize the process subsystem (kernel).
|
| struct Process * | proc_new_with_name (UNUSED_ARG(const char *, name), void(*entry)(void), iptr_t data, size_t stack_size, cpu_stack_t *stack_base) |
| | Create a new process, starting at the provided entry point.
|
| const char * | proc_name (struct Process *proc) |
| | Return the name of the specified process.
|
|
const char * | proc_currentName (void) |
| | Return the name of the currently running process.
|
|
void | proc_rename (struct Process *proc, const char *name) |
| | Rename a process.
|
| void | proc_setPri (struct Process *proc, int pri) |
| | Change the scheduling priority of a process.
|
|
void | proc_entry (void) |
| | Entry point for all the processes.
|
| void | proc_exit (void) |
| | Terminate the current process.
|
|
static void | proc_schedule (void) |
| | Call the scheduler and eventually replace the current running process.
|
| void | proc_switch (void) |
| | Give the control of the CPU to another process.
|
|
void | proc_wakeup (Process *proc) |
| | Immediately wakeup a process, dispatching it to the CPU.
|
| void | proc_yield (void) |
| | Voluntarily release the CPU.
|
Variables |
| REGISTER List | proc_ready_list |
| | Track ready processes.
|
| REGISTER Process * | current_process |
| | Track running processes.
|
| static struct Process | main_process |
| | The main process (the one that executes main()).
|
Detailed Description
Simple cooperative and preemptive multitasking scheduler.
- Author:
- Bernie Innocenti <bernie@codewiz.org>
-
Stefano Fedrigo <aleph@develer.com>
-
Andrea Righi <arighi@develer.com>
Definition in file proc.c.
Function Documentation
Terminate the current process.
Terminate the execution of the current process.
Definition at line 477 of file proc.c.
Initialize the process subsystem (kernel).
It must be called before using any process related function.
Definition at line 201 of file proc.c.
| const char* proc_name |
( |
struct Process * |
proc |
) |
|
Return the name of the specified process.
NULL is a legal argument and will return the name "<NULL>".
Definition at line 392 of file proc.c.
| struct Process* proc_new_with_name |
( |
UNUSED_ARG(const char *, name) |
, |
|
|
void(*)(void) |
entry, |
|
|
iptr_t |
data, |
|
|
size_t |
stack_size, |
|
|
cpu_stack_t * |
stack_base | |
|
) |
| | [read] |
Create a new process, starting at the provided entry point.
- Note:
- The function is a more convenient way to create a process, as you don't have to specify the name.
- Returns:
- Process structure of new created process if successful, NULL otherwise.
Definition at line 284 of file proc.c.
| void proc_setPri |
( |
struct Process * |
proc, |
|
|
int |
pri | |
|
) |
| | |
Change the scheduling priority of a process.
Process piorities are signed ints, whereas a larger integer value means higher scheduling priority. The default priority for new processes is 0. The idle process runs with the lowest possible priority: INT_MIN.
A process with a higher priority always preempts lower priority processes. Processes of equal priority share the CPU time according to a simple round-robin policy.
As a general rule to maximize responsiveness, compute-bound processes should be assigned negative priorities and tight, interactive processes should be assigned positive priorities.
To avoid interfering with system background activities such as input processing, application processes should remain within the range -10 and +10.
Definition at line 439 of file proc.c.
| void proc_switch |
( |
void |
|
) |
|
Give the control of the CPU to another process.
- Note:
- Assume the current process has been already added to a wait queue.
- Warning:
- This should be considered an internal kernel function, even if it is allowed, usage from application code is strongly discouraged.
Definition at line 603 of file proc.c.
Voluntarily release the CPU.
Public scheduling class methods.
Definition at line 630 of file proc.c.
Variable Documentation
Track running processes.
Definition at line 127 of file proc.c.
The main process (the one that executes main()).
Definition at line 130 of file proc.c.
Track ready processes.
Access to this list must be performed with interrupts disabled
Definition at line 120 of file proc.c.