Skip to content

Commit dab81d2

Browse files
committed
[#36] Added skeleton for ptrace() syscall
1 parent e20f740 commit dab81d2

File tree

4 files changed

+66
-3
lines changed

4 files changed

+66
-3
lines changed

Diff for: kernel/scheduler.c

+62
Original file line numberDiff line numberDiff line change
@@ -1330,6 +1330,68 @@ int sys_waitpid_hdlr(uint32_t arg1, uint32_t arg2, uint32_t arg3)
13301330
return pid;
13311331
}
13321332

1333+
enum __ptrace_request {
1334+
PTRACE_TRACEME = 0,
1335+
PTRACE_PEEKTEXT = 1,
1336+
PTRACE_PEEKDATA = 2,
1337+
PTRACE_PEEKUSER = 3,
1338+
PTRACE_POKETEXT = 4,
1339+
PTRACE_POKEDATA = 5,
1340+
PTRACE_POKEUSER = 6,
1341+
PTRACE_CONT = 7,
1342+
PTRACE_KILL = 8,
1343+
PTRACE_SINGLESTEP = 9,
1344+
PTRACE_GETREGS = 12,
1345+
PTRACE_SETREGS = 13,
1346+
PTRACE_ATTACH = 16,
1347+
PTRACE_DETACH = 17,
1348+
PTRACE_SYSCALL = 24,
1349+
};
1350+
1351+
int sys_ptrace_hdlr(uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5)
1352+
1353+
{
1354+
(void)arg5;
1355+
enum __ptrace_request request = arg1;
1356+
uint32_t pid = arg2;
1357+
void *addr = (void *)arg3;
1358+
void *data = (void *)arg4;
1359+
1360+
switch (request) {
1361+
case PTRACE_TRACEME:
1362+
break;
1363+
case PTRACE_PEEKTEXT:
1364+
break;
1365+
case PTRACE_PEEKDATA:
1366+
break;
1367+
case PTRACE_PEEKUSER:
1368+
break;
1369+
case PTRACE_POKETEXT:
1370+
break;
1371+
case PTRACE_POKEDATA:
1372+
break;
1373+
case PTRACE_POKEUSER:
1374+
break;
1375+
case PTRACE_CONT:
1376+
break;
1377+
case PTRACE_KILL:
1378+
break;
1379+
case PTRACE_SINGLESTEP:
1380+
break;
1381+
case PTRACE_GETREGS:
1382+
break;
1383+
case PTRACE_SETREGS:
1384+
break;
1385+
case PTRACE_ATTACH:
1386+
break;
1387+
case PTRACE_DETACH:
1388+
break;
1389+
case PTRACE_SYSCALL:
1390+
break;
1391+
}
1392+
return -1;
1393+
}
1394+
13331395

13341396
int sys_kill_hdlr(uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5)
13351397
{

Diff for: kernel/syscall_table_gen.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@
8181
["getpeername", 2, "sys_getpeername_hdlr"],
8282
["readlink", 3, "sys_readlink_hdlr"],
8383
["fcntl", 3, "sys_fcntl_hdlr"],
84-
["setsid", 0, "sys_setsid_hdlr"]
84+
["setsid", 0, "sys_setsid_hdlr"],
85+
["ptrace", 4, "sys_ptrace_hdlr"]
8586

8687
]
8788

0 commit comments

Comments
 (0)