PageRenderTime 26ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/python-ptrace-0.6.3/ptrace/syscall/prototypes.py

#
Python | 469 lines | 450 code | 12 blank | 7 comment | 2 complexity | 5666bed6067544bb53fdc8a82a626be3 MD5 | raw file
Possible License(s): GPL-2.0
  1. # From Linux kernel source code
  2. # include/linux/syscalls.h
  3. # arch/i386/kernel/syscall_table.S
  4. # arch/um/include/sysdep-i386/syscalls.h
  5. # arch/um/sys-i386/sys_call_table.S
  6. ALIASES = {
  7. "mmap": ("mmap2",),
  8. "break": ("brk",),
  9. "exit": ("exit_group",),
  10. "fcntl": ("fcntl64",),
  11. }
  12. # Name of arguments containing a filename or a path
  13. FILENAME_ARGUMENTS = set(("filename", "pathname"))
  14. SYSCALL_PROTOTYPES = {
  15. "read": ("ssize_t", (
  16. ("unsigned int", "fd"),
  17. ("char*", "buf"),
  18. ("size_t", "count"),
  19. )),
  20. "write": ("ssize_t", (
  21. ("int", "fd"),
  22. ("const char*", "buf"),
  23. ("size_t", "count"),
  24. )),
  25. "open": ("long", (
  26. ("const char*", "filename"),
  27. ("int", "mode"),
  28. )),
  29. "readlink": ("long", (
  30. ("const char*", "pathname"),
  31. ("char*", "buf"),
  32. ("int", "bufsize"),
  33. )),
  34. "close": ("long", (
  35. ("unsigned int", "fd"),
  36. )),
  37. "set_tid_address": ("long", (
  38. ("int*", "tidptr"),
  39. )),
  40. "set_robust_list": ("long", (
  41. ("struct robust_list_head*", "head"),
  42. ("size_t", "len_ptr"),
  43. )),
  44. "fcntl": ("long", (
  45. ("unsigned int", "fd"),
  46. ("unsigned int", "cmd"),
  47. ("unsigned int", "arg"),
  48. )),
  49. "stat": ("long", (
  50. ("const char*", "filename"),
  51. ("struct oldstat*", "statbuf"),
  52. )),
  53. "stat64": ("long", (
  54. ("const char*", "filename"),
  55. ("struct stat64*", "statbuf"),
  56. )),
  57. "lstat": ("long", (
  58. ("const char*", "filename"),
  59. ("struct oldstat*", "statbuf"),
  60. )),
  61. "lstat64": ("long", (
  62. ("const char*", "filename"),
  63. ("struct stat64*", "statbuf"),
  64. )),
  65. "fstat": ("long", (
  66. ("unsigned int", "fd"),
  67. ("struct oldstat*", "statbuf"),
  68. )),
  69. "fstat64": ("long", (
  70. ("unsigned long", "fd"),
  71. ("struct stat64*", "buf"),
  72. )),
  73. "fstatat64": ("long", (
  74. ("unsigned long", "dirfd"),
  75. ("const char*", "filename"),
  76. ("struct stat64*", "statbuf"),
  77. ("int", "flags"),
  78. )),
  79. "statfs": ("long", (
  80. ("const char*", "pathname"),
  81. ("struct statfs*", "buf"),
  82. )),
  83. "fstatfs": ("long", (
  84. ("int", "fs"),
  85. ("struct statfs*", "buf"),
  86. )),
  87. "access": ("long", (
  88. ("char*", "filename"),
  89. ("int", "mode"),
  90. )),
  91. "lseek": ("long", (
  92. ("unsigned int", "fd"),
  93. ("unsigned long", "offset"),
  94. ("loff_t*", "result"),
  95. ("unsigned int", "origin"),
  96. )),
  97. "llseek": ("long", (
  98. ("unsigned int", "fd"),
  99. ("unsigned long", "offset_high"),
  100. ("unsigned long", "offset_low"),
  101. ("loff_t*", "result"),
  102. ("unsigned int", "origin"),
  103. )),
  104. "break": ("void*", (
  105. ("void*", "brk"),
  106. )),
  107. "sigprocmask": ("int", (
  108. ("int", "how"),
  109. ("const old_sigset_t*", "set"),
  110. ("old_sigset_t*", "ofset"),
  111. )),
  112. "rt_sigprocmask": ("int", (
  113. ("int", "how"),
  114. ("const sigset_t*", "set"),
  115. ("sigset_t*", "ofset"),
  116. ("size_t", "sigsetsize"),
  117. )),
  118. "sigaction": ("long", (
  119. ("int", "signum"),
  120. ("const struct oldsigaction*", "act"),
  121. ("struct oldsigaction*", "oldact"),
  122. )),
  123. "rt_sigaction": ("long", (
  124. # FIXME: Check parameters!
  125. ("int", "signum"),
  126. ("const struct sigaction*", "act"),
  127. ("struct sigaction*", "oldact"),
  128. ("int", "sigsetsize"),
  129. )),
  130. "select": ("long", (
  131. ("int", "n"),
  132. ("fd_set*", "inp"),
  133. ("fd_set*", "outp"),
  134. ("fd_set*", "exp"),
  135. ("struct timeval*", "timeout"),
  136. )),
  137. "poll": ("long", (
  138. ("struct pollfd*", "ufds"),
  139. ("int", "nfds"),
  140. ("long", "timeout"),
  141. )),
  142. "gettimeofday": ("long", (
  143. ("struct timeval*", "tv"),
  144. ("struct timezone*", "tz"),
  145. )),
  146. "settimeofday": ("long", (
  147. ("struct timeval*", "tv"),
  148. ("struct timezone*", "tz"),
  149. )),
  150. "socketcall": ("long", (
  151. ("int", "call"),
  152. ("unsigned long*", "args"),
  153. )),
  154. "clock_gettime": ("long", (
  155. ("clockid_t", "which_clock"),
  156. ("struct timespec*", "tp"),
  157. )),
  158. "clock_getres": ("long", (
  159. ("clockid_t", "which_clock"),
  160. ("struct timespec*", "tp"),
  161. )),
  162. "time": ("time_t", (
  163. ("time_t*", "tloc"),
  164. )),
  165. "stime": ("long", (
  166. ("time_t*", "tptr"),
  167. )),
  168. "munmap": ("long", (
  169. ("void*", "addr"),
  170. ("size_t", "length"),
  171. )),
  172. "mmap": ("void*", (
  173. ("void*", "start"),
  174. ("unsigned long", "length"),
  175. ("unsigned long", "prot"),
  176. ("long", "flags"),
  177. ("long", "fd"),
  178. ("unsigned long", "offset"),
  179. )),
  180. "madvise": ("long", (
  181. ("unsigned long", "start"),
  182. ("size_t", "length"),
  183. ("int", "behaviour"),
  184. )),
  185. "exit": ("void", (
  186. ("int", "error_code"),
  187. )),
  188. "futex": ("long", (
  189. ("u32*", "uaddr"),
  190. ("int", "op"),
  191. ("u32", "val"),
  192. ("struct timespec*", "utime"),
  193. ("u32*", "uaddr2"),
  194. ("u32", "val3"),
  195. )),
  196. "ioctl": ("long", (
  197. ("unsigned int", "fd"),
  198. ("unsigend int", "cmd"),
  199. ("void*", "arg"),
  200. )),
  201. "getrusage": ("long", (
  202. ("int", "who"),
  203. ("struct rusage*", "usage"),
  204. )),
  205. "times": ("clock_t", (
  206. ("struct tms*", "tbuf"),
  207. )),
  208. "mprotect": ("long", (
  209. ("void*", "start"),
  210. ("size_t", "len"),
  211. ("unsigned long", "prot"),
  212. )),
  213. "getrlimit": ("int", (
  214. ("unsigned int", "resource"),
  215. ("struct rlimit*", "rlim"),
  216. )),
  217. "setrlimit": ("int", (
  218. ("unsigned int", "resource"),
  219. ("struct rlimit*", "rlim"),
  220. )),
  221. "getuid": ("uid_t", tuple()),
  222. "geteuid": ("uid_t", tuple()),
  223. "getuid16": ("uid16_t", tuple()),
  224. "geteuid16": ("uid16_t", tuple()),
  225. "issetugid": ("long", tuple()),
  226. "getgid": ("gid_t", tuple()),
  227. "getegid": ("gid_t", tuple()),
  228. "getgid16": ("gid16_t", tuple()),
  229. "getegid16": ("gid16_t", tuple()),
  230. "getpid": ("pid_t", tuple()),
  231. "getppid": ("pid_t", tuple()),
  232. "setuid": ("long", (("uid_t", "uid"),)),
  233. "setreuid": ("long", (("uid_t", "uid"),)),
  234. "setfsuid": ("long", (("uid_t", "uid"),)),
  235. "setgid": ("long", (("gid_t", "gid"),)),
  236. "setregid": ("long", (("gid_t", "gid"),)),
  237. "setfsgid": ("long", (("gid_t", "gid"),)),
  238. "getsid": ("long", (("pid_t", "pid"),)),
  239. "setsid": ("long", tuple()),
  240. "pipe": ("int", (
  241. ("int[2]", "filedes"),
  242. )),
  243. "wait4": ("pid_t", (
  244. ("pid_t", "pid"),
  245. ("int*", "status"),
  246. ("int", "options"),
  247. ("struct rusage*", "rusage"),
  248. )),
  249. "waitpid": ("pid_t", (
  250. ("pid_t", "pid"),
  251. ("int*", "status"),
  252. ("int", "options"),
  253. )),
  254. "set_thread_area": ("long", (
  255. ("struct user_desc*", "u_info"),
  256. )),
  257. "oldolduname": ("long", (
  258. ("struct oldold_utsname*", "name"),
  259. )),
  260. "olduname": ("long", (
  261. ("struct old_utsname*", "name"),
  262. )),
  263. "uname": ("long", (
  264. ("struct new_utsname*", "name"),
  265. )),
  266. "clone": ("long", (
  267. ("int", "flags"),
  268. ("void*", "child_stack"),
  269. ("void*", "parent_tidptr"),
  270. ("struct user_desc*", "newtls"),
  271. ("void*", "child_tidptr"),
  272. )),
  273. "__getcwd": ("long", (
  274. ("char*", "pathname"),
  275. ("size_t", "size"),
  276. )),
  277. "dup2": ("long", (
  278. ("int", "fd"),
  279. ("int", "fd2"),
  280. )),
  281. "fork": ("uid_t", tuple()),
  282. "execve": ("long", (
  283. ("const char*", "filename"),
  284. ("const char**", "argv"),
  285. ("const char**", "envp"),
  286. )),
  287. "readv": ("ssize_t", (
  288. ("int", "fd"),
  289. ("const iovec*", "vector"),
  290. ("int", "count"),
  291. )),
  292. "writev": ("ssize_t", (
  293. ("int", "fd"),
  294. ("const iovec*", "vector"),
  295. ("int", "count"),
  296. )),
  297. "openat": ("long", (
  298. ("int", "dirfd"),
  299. ("const char*", "pathname"),
  300. ("int", "flags"),
  301. ("int", "mode"),
  302. )),
  303. "getdents": ("long", (
  304. ("int", "fd"),
  305. ("struct dirent*", "dirp"),
  306. ("unsigned int", "count"),
  307. )),
  308. "getdents64": ("long", (
  309. ("int", "fd"),
  310. ("struct dirent64*", "dirp"),
  311. ("unsigned int", "count"),
  312. )),
  313. "dup": ("long", (
  314. ("int", "fd"),
  315. )),
  316. "dup2": ("long", (
  317. ("int", "oldfd"),
  318. ("int", "newfd"),
  319. )),
  320. "fchdir": ("long", (
  321. ("int", "fd"),
  322. )),
  323. "getdirentries": ("long", (
  324. ("int", "fd"),
  325. ("void*", "buf"),
  326. ("int", "nbytes"),
  327. ("long*", "basep"),
  328. )),
  329. "unlink": ("long", (
  330. ("const char*", "pathname"),
  331. )),
  332. "kill" : ("long", (
  333. ("int", "pid"),
  334. ("int", "signum"),
  335. )),
  336. "modify_ldt" : ("long", (
  337. ("int", "func"),
  338. ("void*", "ptr"),
  339. ("unsigned long", "bytecount"),
  340. )),
  341. "ipc" : ("long", (
  342. ("unsigned int", "call"),
  343. ("int", "first"),
  344. ("unsigned long", "second"),
  345. ("long", "third"),
  346. ("void*", "ptr"),
  347. ("long", "fifth"),
  348. )),
  349. "nanosleep" : ("long", (
  350. ("struct timespec*", "rqtp"),
  351. ("struct timespec*", "rmtp"),
  352. )),
  353. "restart_syscall" : ("long", tuple()),
  354. "getsockname" : ("long", (
  355. ("int", "fd"),
  356. ("struct sockaddr*", "name"),
  357. ("socklen_t*", "namelen"),
  358. )),
  359. "getpeername" : ("long", (
  360. ("int", "fd"),
  361. ("struct sockaddr*", "name"),
  362. ("socklen_t*", "namelen"),
  363. )),
  364. "getsockopt" : ("long", (
  365. ("int", "fd"),
  366. ("int", "level"),
  367. ("int", "optname"),
  368. ("void*", "optval"),
  369. ("socklen_t*", "optlen"),
  370. )),
  371. "setsockopt" : ("long", (
  372. ("int", "fd"),
  373. ("int", "level"),
  374. ("int", "optname"),
  375. ("void*", "optval"),
  376. ("socklen_t*", "optlen"),
  377. )),
  378. "bind" : ("long", (
  379. ("int", "fd"),
  380. ("const struct sockaddr*", "addr"),
  381. ("socklen_t", "addrlen"),
  382. )),
  383. "connect" : ("long", (
  384. ("int", "fd"),
  385. ("const struct sockaddr*", "addr"),
  386. ("socklen_t", "addrlen"),
  387. )),
  388. "socket" : ("long", (
  389. ("int", "domain"),
  390. ("int", "type"),
  391. ("int", "protocol"),
  392. )),
  393. "alarm" : ("long", (
  394. ("unsigned int", "seconds"),
  395. )),
  396. "recv": ("ssize_t", (
  397. ("int", "sockfd"),
  398. ("void*", "buf"),
  399. ("size_t", "len"),
  400. ("int", "flags"),
  401. )),
  402. "recvfrom": ("ssize_t", (
  403. ("int", "sockfd"),
  404. ("void*", "buf"),
  405. ("size_t", "len"),
  406. ("int", "flags"),
  407. ("struct sockaddr*", "src_addr"),
  408. ("socklen_t", "addrlen"),
  409. )),
  410. "recvmsg": ("ssize_t", (
  411. ("int", "sockfd"),
  412. ("struct msghdr*", "msg"),
  413. ("int", "flags"),
  414. )),
  415. "send": ("ssize_t", (
  416. ("int", "sockfd"),
  417. ("const void*", "buf"),
  418. ("size_t", "len"),
  419. ("int", "flags"),
  420. )),
  421. "sendto": ("ssize_t", (
  422. ("int", "sockfd"),
  423. ("const void*", "buf"),
  424. ("size_t", "len"),
  425. ("int", "flags"),
  426. ("const struct sockaddr*", "dest_addr"),
  427. ("socklen_t", "addrlen"),
  428. )),
  429. "sendmsg": ("ssize_t", (
  430. ("int", "sockfd"),
  431. ("const struct msghdr*", "buf"),
  432. ("int", "flags"),
  433. )),
  434. "listen": ("int", (
  435. ("int", "fd"),
  436. ("int", "backlog"),
  437. )),
  438. "accept": ("int", (
  439. ("int", "fd"),
  440. ("struct sockaddr*", "addr"),
  441. ("socklen_t*", "addrlen"),
  442. )),
  443. "socketpair": ("int", (
  444. ("int", "family"),
  445. ("int", "type"),
  446. ("int", "protocol"),
  447. ("int*", "sockvec"),
  448. )),
  449. "shutdown": ("int", (
  450. ("int", "fd"),
  451. ("int", "how"),
  452. )),
  453. }
  454. for orig, copies in ALIASES.iteritems():
  455. orig = SYSCALL_PROTOTYPES[orig]
  456. for copy in copies:
  457. SYSCALL_PROTOTYPES[copy] = orig