Scheduler is now selectable in make menuconfig in kernel hacking.
[projects/modsched/linux.git] / kernel / sched / modsched / framework / include / fw.h
1 #ifndef FW_H_
2 #define FW_H_
3
4 #include "fw_types.h"
5 #include "fw_task.h"
6 #include "os.h"
7
8 #define fw_printf os_printf
9
10 /**
11  * \brief A printf function.
12  *
13  * @param formatstring The format string to print on screen.
14  */
15 //#define fw_printf(fmt, ...)  os_printf(fmt ,## __VA_ARGS__)
16
17 /**
18  * \brief Dynamic allocation of memory.
19  *
20  * @param size The amount of memory to allocate.
21  * @return A pointer to the allocated memory.
22  */
23 void *fw_malloc(fw_size_t size);
24
25 /**
26  * \brief Releases a dynamically allocated chunk of memory.
27  *
28  * @param ptr Memory region to release.
29  */
30 void fw_free(void* ptr);
31
32 void fw_create_task(fw_task_t *task);
33
34 /**
35  * \brief Runs the given task on a (random) processing unit.
36  *
37  * @param task The task that shall run.
38  */
39 void fw_dispatch(fw_task_t *task);
40
41 /**
42  * \brief Runs the given task on the given processing unit.
43  *
44  * @param task The task that shall run.
45  * @param cpu The CPU that will run the task.
46  */
47 void fw_dispatch_mp(fw_task_t *task, int cpu);
48
49 /**
50  * \brief Retrieves the currently running thread on the requested CPU.
51  *
52  * @param cpu The CPU of interest.
53  * @return The thread structure of the requested or current CPU respectively.
54  */
55 fw_task_t *fw_current_task(int cpu);
56
57 int fw_task_info(fw_task_t *task, char *buf, int length);
58
59 int fw_register_module(void);
60
61 void fw_init(void);
62
63 #endif /* FW_H_ */