All new accounts created on Gitlab now require administrator approval. If you invite any collaborators, please let Flux staff know so they can approve the accounts.

Commit 4d60fe0b authored by Charles Jacobsen's avatar Charles Jacobsen Committed by Vikram Narayanan

Starting ipc.

parent 7e85e8a3
......@@ -9,16 +9,18 @@
* ====================================
*
* LCD_STATUS_UNFORMED = still setting up, or status not set yet
* LCD_STATUS_SUSPENDED = lcd is paused, and kthread is going to asleep / is
* LCD_STATUS_SUSPENDED = lcd is paused, and kthread is going to sleep / is
* asleep
* LCD_STATUS_RUNNABLE = lcd is paused, and kthread is awake, or should awaken
* LCD_STATUS_RUNNABLE = lcd is paused, and kthread is awake, or should
* awaken
* (the status should be set to this if the lcd /
* kthread are suspended, and you want it to wake up)
* LCD_STATUS_RUNNING = lcd is running, or is about to run
* LCD_STATUS_KILL = lcd and kthread should die
* LCD_STATUS_DEAD = lcd is not running, most parts have been destroyed
* (lcd_struct is only hanging around to provide status
* info); the kthread is ready to die and be reaped
* (lcd_struct is only hanging around to provide
* status info); the kthread is ready to die and be
* reaped
*/
enum lcd_status {
LCD_STATUS_UNFORMED = 0,
......
......@@ -8,27 +8,7 @@
* This is accessible (mapped) inside the lcd.
*/
struct lcd_utcb {
/*
* IPC registers
* =============
*
* Capability Register machine register (arch-dep)
* Badge Register machine register (arch-dep)
* Message tag machine register (arch-dep)
* Message registers 6 total. All message registers are
* available in the ipc.mr array. Some
* message registers may also be accessible
* via machine registers. Use arch-dep macros
* for guaranteed fast and portable access.
*
* For portability, use the arch-dep macros provided by the arch code
* to access ipc registers.
*
* Based on seL4 message register design. See seL4 Manual, 4.1.
*/
struct {
u64 mr[6];
} ipc;
u64 mr[8];
};
#endif /* LCD_DOMAINS_UTCB_H */
......@@ -1490,6 +1490,8 @@ static int lcd_module_run_once(struct lcd *lcd)
*/
syscall_id = LCD_ARCH_GET_SYSCALL_NUM(lcd->lcd_arch);
LCD_MSG("handling syscall %d", syscall_id);
r = lcd_handle_syscall(lcd);
if (syscall_id != LCD_SYSCALL_YIELD) {
LCD_ERR("unexpected syscall id %d", syscall_id);
r = -EIO;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment