aos/include/grading.h
Daniel Schwyn 6d444bf552 Main handout
Signed-off-by: Daniel Schwyn <daniel.schwyn@inf.ethz.ch>
2022-03-03 14:57:51 +01:00

70 lines
2.4 KiB
C

#ifndef __GRADING_H
#define __GRADING_H
#include <aos/aos.h>
/**
* Initialises the grading library within the init process on bootstrap core.
* It will use the address provided in argc/v to consult the bootinfo
* to determine the arguments to the grading library.
*/
void grading_setup_bsp_init(int argc, char **argv);
/**
* Initialises the grading library within the init process on application cores.
* It will use bootinfo pointer to determine the arguments to the grading library.
*
* Note: We do not want to restrict your OS design. If you have a design
* that does not need the bootinfo on the second core, please talk to the
* assistants. This function is a convenience for the 90% of designs
* that make the bootinfo available on the second core anyway.
*/
void grading_setup_app_init(struct bootinfo * bi);
/**
* Initialises the grading library within a generic process. Takes the process's
* command-line arguments, and removes anything grading-specific. Only
* use this function in non-init processes. *
*/
void grading_setup_noninit(int *argc, char ***argv);
/**
* Call this function after initializing your mm implementation.
* If you have your memory server in a separate process, call me there otherwise
* it should be called in init.
* Make sure you call it after the call to `ram_alloc_set`
*/
struct mm;
void grading_test_mm(struct mm * mmtest);
/**
* Call this function to run the tests. In init, call this
* function after all the library functions are available, but before
* spwaning any other process.
*/
void grading_test_early(void);
/**
* Call this function to run the tests. In init, call this
* function after all the library functions are available, and
* after all system processes have been created (nameserver and similar).
*/
void grading_test_late(void);
/**
* Stubs for grading RPC implementation
* These calls should be called on the receiver side of the RPC defined in
* lib/aos/aos_rpc.c
* */
void grading_rpc_handle_number(uintptr_t val);
void grading_rpc_handler_string(const char* string);
void grading_rpc_handler_serial_getchar(void);
void grading_rpc_handler_serial_putchar(char c);
void grading_rpc_handler_ram_cap(size_t bytes, size_t alignment);
void grading_rpc_handler_process_spawn(char* cmdline, coreid_t core);
void grading_rpc_handler_process_get_name(domainid_t pid);
void grading_rpc_handler_process_get_all_pids(void);
#endif /* __GRADING_H */