[kernel] Add event syscalls
The event object was missing any syscalls. Furthermore, kobject had an old object_signal implementation (the syscall itself no longer exists), which was removed. User code should only be able to set signals on events.
This commit is contained in:
36
src/kernel/syscalls/event.cpp
Normal file
36
src/kernel/syscalls/event.cpp
Normal file
@@ -0,0 +1,36 @@
|
||||
#include <j6/errors.h>
|
||||
#include <j6/signals.h>
|
||||
|
||||
#include "objects/event.h"
|
||||
#include "syscalls/helpers.h"
|
||||
|
||||
using namespace obj;
|
||||
|
||||
namespace syscalls {
|
||||
|
||||
j6_status_t
|
||||
event_create(j6_handle_t *self)
|
||||
{
|
||||
construct_handle<event>(self);
|
||||
return j6_status_ok;
|
||||
}
|
||||
|
||||
j6_status_t
|
||||
event_signal(event *self, j6_signal_t signals)
|
||||
{
|
||||
if (signals & j6_signal_global_mask)
|
||||
return j6_err_invalid_arg;
|
||||
|
||||
self->assert_signal(signals);
|
||||
return j6_status_ok;
|
||||
}
|
||||
|
||||
j6_status_t
|
||||
event_clear(event *self, j6_signal_t mask)
|
||||
{
|
||||
self->deassert_signal(~mask);
|
||||
return j6_status_ok;
|
||||
}
|
||||
|
||||
|
||||
} // namespace syscalls
|
||||
@@ -89,16 +89,6 @@ object_wait_many(j6_handle_t * handles, size_t handles_count, uint64_t mask, j6_
|
||||
return j6_status_ok;
|
||||
}
|
||||
|
||||
j6_status_t
|
||||
object_signal(kobject *self, j6_signal_t signals)
|
||||
{
|
||||
if ((signals & j6_signal_user_mask) != signals)
|
||||
return j6_err_invalid_arg;
|
||||
|
||||
self->assert_signal(signals);
|
||||
return j6_status_ok;
|
||||
}
|
||||
|
||||
j6_status_t
|
||||
object_close(kobject *self)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user