2019-12-29 16:39:30 +01:00
|
|
|
#include <kernel/process.h>
|
|
|
|
|
2020-01-05 10:35:44 +01:00
|
|
|
// This function SHOULD NOT be called
|
2019-12-29 16:39:30 +01:00
|
|
|
// without atomic operation !!
|
2020-02-05 21:09:39 +01:00
|
|
|
// TODO: dynamic allocation ?
|
2020-01-12 15:58:35 +01:00
|
|
|
pid_t process_alloc(struct process **process)
|
2019-12-29 16:39:30 +01:00
|
|
|
{
|
2020-01-12 15:58:35 +01:00
|
|
|
extern struct process_stack process_stack[PROCESS_MAX];
|
2019-12-29 16:39:30 +01:00
|
|
|
|
|
|
|
for (int i = 0 ; i < PROCESS_MAX ; i = i + 1)
|
|
|
|
{
|
2020-02-05 21:09:39 +01:00
|
|
|
if (process_stack[i].status == PROC_UNUSED)
|
2019-12-29 16:39:30 +01:00
|
|
|
{
|
2020-02-05 21:09:39 +01:00
|
|
|
process_stack[i].status = PROC_USED;
|
2019-12-29 16:39:30 +01:00
|
|
|
*process = &process_stack[i].process;
|
|
|
|
return (i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return (-1);
|
|
|
|
}
|