feat: add inherited sessions and desktop session teardown
This commit is contained in:
@@ -36,6 +36,8 @@ int spawn(const char* path, const char* args); // Spawn child, inheriting
|
||||
int waitpid(int pid); // Wait for process to exit
|
||||
int kill(int pid); // Kill a process
|
||||
int proclist(ProcInfo* buf, int max); // List all processes (returns count)
|
||||
int setsession(); // Start a new inherited process session
|
||||
int killsession(int sessionId); // Kill live members; repeat until zero
|
||||
```
|
||||
|
||||
**`ProcInfo` struct:**
|
||||
|
||||
@@ -125,6 +125,8 @@ namespace montauk::abi {
|
||||
// User management
|
||||
static constexpr uint64_t SYS_SETUSER = 92;
|
||||
static constexpr uint64_t SYS_GETUSER = 93;
|
||||
static constexpr uint64_t SYS_SETSESSION = 174;
|
||||
static constexpr uint64_t SYS_KILLSESSION = 175;
|
||||
static constexpr uint64_t SYS_FRENAME = 94;
|
||||
static constexpr uint64_t SYS_GETCWD = 95;
|
||||
static constexpr uint64_t SYS_CHDIR = 96;
|
||||
|
||||
@@ -76,6 +76,8 @@ extern "C" {
|
||||
#define MTK_SYS_GETENVIRON 171
|
||||
#define MTK_SYS_SETENVIRON 172
|
||||
#define MTK_SYS_SPAWN_ENV 173
|
||||
#define MTK_SYS_SETSESSION 174
|
||||
#define MTK_SYS_KILLSESSION 175
|
||||
#define MTK_SYS_CHILDIO_READ 50
|
||||
#define MTK_SYS_CHILDIO_WRITE 51
|
||||
#define MTK_SYS_CHILDIO_WRITEKEY 52
|
||||
@@ -423,6 +425,14 @@ static inline int mtk_kill(int pid) {
|
||||
return (int)_mtk_syscall1(MTK_SYS_KILL, (long)pid);
|
||||
}
|
||||
|
||||
static inline int mtk_setsession(void) {
|
||||
return (int)_mtk_syscall0(MTK_SYS_SETSESSION);
|
||||
}
|
||||
|
||||
static inline int mtk_killsession(int session_id) {
|
||||
return (int)_mtk_syscall1(MTK_SYS_KILLSESSION, (long)session_id);
|
||||
}
|
||||
|
||||
static inline int mtk_proclist(mtk_procinfo *buf, int max) {
|
||||
return (int)_mtk_syscall2(MTK_SYS_PROCLIST, (long)buf, (long)max);
|
||||
}
|
||||
|
||||
@@ -456,6 +456,12 @@ namespace montauk {
|
||||
inline int kill(int pid) {
|
||||
return (int)syscall1(montauk::abi::SYS_KILL, (uint64_t)pid);
|
||||
}
|
||||
inline int setsession() {
|
||||
return (int)syscall0(montauk::abi::SYS_SETSESSION);
|
||||
}
|
||||
inline int killsession(int sessionId) {
|
||||
return (int)syscall1(montauk::abi::SYS_KILLSESSION, (uint64_t)sessionId);
|
||||
}
|
||||
inline int devlist(montauk::abi::DevInfo* buf, int max) {
|
||||
return (int)syscall2(montauk::abi::SYS_DEVLIST, (uint64_t)buf, (uint64_t)max);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user