Scheduler is now selectable in make menuconfig in kernel hacking.
[projects/modsched/linux.git] / kernel / sched / modsched / framework / include / os.h
1 /**
2  * \file os.h
3  * \brief Function prototypes for operating system depend code.
4  * \author Anselm Busse
5  *
6  * This file defines functions that have to be implemented explicitly for every operating system
7  */
8
9 #ifndef OS_H_
10 #define OS_H_
11
12 #include "fw_types.h"
13 #include "fw_task.h"
14 #include <linux/kernel.h>
15
16
17 #define os_printf               printk                  /* Mapping of OS dependent printf */
18
19
20
21 /**
22  * \brief Dynamic allocation of memory.
23  *
24  * @param size The amount of memory to allocate.
25  * @return A pointer to the allocated memory.
26  */
27 void *os_malloc(fw_size_t size);
28
29 /**
30  * \brief Releases a dynamically allocated chunk of memory.
31  *
32  * @param ptr Memory region to release.
33  */
34 void os_free(void* ptr);
35
36 void os_create_task(fw_task_t *task);
37
38 /**
39  * \brief Runs the given task on a (random) processing unit.
40  *
41  * @param task The task that shall run.
42  */
43 void os_dispatch(fw_task_t *task);
44
45 /**
46  * \brief Runs the given task on the given processing unit.
47  *
48  * @param task The task that shall run.
49  * @param cpu The CPU that will run the task.
50  */
51 void os_dispatch_mp(fw_task_t *task, int cpu);
52
53 /**
54  * \brief Returns current task on cpu.
55  *
56  * @param cpu The CPU .
57  */
58 fw_task_t *os_current_task(int cpu);
59
60 /**
61  * \brief Initialization of the operating depended code.
62  *
63  * @return Should return 0 iff initialization successful.
64  */
65 int os_init_os(void);
66
67 void os_spinlock(fw_spinlock_t *lock);
68
69 void os_spinunlock(fw_spinlock_t *lock);
70
71 /**
72  * \brief Returns the name of the task.
73  *
74  * @param *task Pointer to the task
75  * @param *buf Buffer the name is written to.
76  * @param size Size of the buffer.
77  * @return Returns the size of buf.
78  */
79 int os_task_name(fw_task_t *task, char *buf, fw_size_t size);
80
81 const char *os_task_info(fw_task_t *task);
82
83 /*
84 #if 1
85 #include "bertos/os.h"
86 #endif
87 */
88
89 #endif /* OS_H_ */