diff --git a/libmango/include-user/mango/handle.h b/libmango/include-user/mango/handle.h index b515384..ef71805 100644 --- a/libmango/include-user/mango/handle.h +++ b/libmango/include-user/mango/handle.h @@ -12,5 +12,11 @@ extern kern_status_t kern_handle_transfer( kern_handle_t dest_handle, unsigned int mode, kern_handle_t *out_handle); +extern kern_status_t kern_handle_control( + kern_handle_t task, + kern_handle_t handle, + uint32_t set_mask, + uint32_t clear_mask, + uint32_t *out_flags); #endif diff --git a/libmango/include/mango/syscall.h b/libmango/include/mango/syscall.h index f20a8cf..fc388a1 100644 --- a/libmango/include/mango/syscall.h +++ b/libmango/include/mango/syscall.h @@ -51,5 +51,6 @@ #define SYS_FUTEX_WAKE 48 #define SYS_KERN_OBJECT_QUERY 49 #define SYS_TASK_DUPLICATE 50 +#define SYS_KERN_HANDLE_CONTROL 51 #endif diff --git a/libmango/include/mango/types.h b/libmango/include/mango/types.h index 9b6ac21..109e96d 100644 --- a/libmango/include/mango/types.h +++ b/libmango/include/mango/types.h @@ -28,6 +28,12 @@ #define THREAD_CFG_FSBASE 0x20001u #define THREAD_CFG_GSBASE 0x20002u +/* user-defined flags that can be set on handles */ +#define KERN_HANDLE_FLAG0 0x10000000UL +#define KERN_HANDLE_FLAG1 0x20000000UL +#define KERN_HANDLE_FLAG2 0x40000000UL +#define KERN_HANDLE_FLAG3 0x80000000UL + /* maximum number of handles that can be sent in a single message */ #define KERN_MSG_MAX_HANDLES 64