├── .gitignore
├── Dockerfile
├── LICENSE
├── README.md
├── bin
└── ctrace
├── data
├── errno.json
├── npm.png
└── syscalls.json
├── index.js
└── package.json
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 |
6 | # Runtime data
7 | pids
8 | *.pid
9 | *.seed
10 |
11 | # Directory for instrumented libs generated by jscoverage/JSCover
12 | lib-cov
13 |
14 | # Coverage directory used by tools like istanbul
15 | coverage
16 |
17 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
18 | .grunt
19 |
20 | # node-waf configuration
21 | .lock-wscript
22 |
23 | # Compiled binary addons (http://nodejs.org/api/addons.html)
24 | build/Release
25 |
26 | # Dependency directory
27 | node_modules
28 |
29 | # Optional npm cache directory
30 | .npm
31 |
32 | # Optional REPL history
33 | .node_repl_history
34 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | # > docker run -i -t --security-opt seccomp:unconfined -v $PWD:/var/opt/src $IMAGE
2 |
3 | FROM ubuntu:14.04
4 |
5 | # Common enviromnent variables
6 | ENV TERM=xterm
7 | ENV DEBIAN_FRONTEND noninteractive
8 |
9 | # Add proper locales
10 | RUN locale-gen ru_RU.UTF-8
11 | RUN dpkg-reconfigure debconf locales
12 | ENV LANG=ru_RU.UTF-8 LC_ALL=ru_RU.UTF-8 LANGUAGE=ru_RU:ru
13 |
14 | # apt-get configuration
15 | RUN rm -rf /var/lib/apt/lists/*
16 | RUN apt-get update --fix-missing
17 |
18 | # Install requred pacakges
19 | # strace required "--security-opt seccomp:unconfined" option on container running
20 | RUN apt-get update --fix-missing && \
21 | apt-get install -y curl \
22 | wget \
23 | strace
24 |
25 | RUN curl -sL https://asciinema.org/install | sh
26 |
27 | # Install NodeJs
28 | RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - && apt-get install -y nodejs
29 |
30 | RUN /bin/bash
31 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 Aleksandr Komlev
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ctrace
2 | Well-formatted and improved trace system calls and signals (when the debugger does not help).
3 |
4 |
5 |
6 |
7 | ## Why?
8 | Awesome tools ```strace``` and ```dtruss``` have only one drawback: too much information which is hard to understand without additional sources of information and various configuration options. ```ctrace``` resolves it.
9 |
10 | ```ctrace``` are indispensable in the following cases
11 | - Debugging complex performance issues or not identified unhandled errors and exceptions in own code or someone else's code
12 | - Learning OS kernel
13 |
14 | ## Let's try it!
15 |
16 | What do you think how difficult it is to display a hint for using CLI utility, let us say NPM?
17 |
18 | ```
19 | > ctrace -c "npm --help"
20 | ```
21 | What we see?! What NPM does to simply display help?
22 | - over 6800 system calls elapsed over 650 msec!
23 | - 7 child processes :open_mouth:
24 | - aims to open over 400 files
25 |
26 | **Сlearly there is something to improve!** :muscle:
27 |
28 |
29 |
30 | ## Features
31 |
32 | - Supported platforms: OSx (dtruss), Linux (strace)
33 | - Trace command or attach to process (with forks following)
34 | - Syscall details in output (number, description, synonyms, is it platform specific syscall)
``` pread (preadv), 534 -- read or write data into multiple ```
35 | - Resolving errno in syscall result
```Err#22 -> EINVAL : Invalid argument``` (only OSx)
36 | - Prints by default only syscall with errors, with ```-v``` prints all output
37 | - Filter output with syscall list ``` -f "lstat,open" ```
38 |
39 | ## Installation
40 | ```sh
41 | $> npm install -g ctrace
42 | ```
43 |
44 | ```
45 | $> ctrace --help
46 |
47 | Usage: ctrace [options]
48 |
49 | ctrace - well-formatted and improved trace system calls and signals
50 |
51 | Options:
52 |
53 | -h, --help output usage information
54 | -V, --version output the version number
55 | -p, --pid [pid] process id to trace
56 | -c, --cmd [cmd] command to trace
57 | -f, --filter [syscall,] trace syscall only from list
58 | -v, --verbose print all syscalls (by default only with errors)
59 |
60 | Examples:
61 |
62 | $ ctrace -p 2312 -v
63 | $ ctrace -c "ping google.com"
64 | ```
65 |
66 | ## Troubleshooting
67 |
68 | ### OSx : Dtrace cannot control executables signed with restricted entitlements
69 |
70 | As you may know Apple released their new OS X revision 10.11 this year with a great security feature built-in: System Integrity Protection. In a nutshell, this mechanism protects any system data and important filesystem components (like /System or /usr) from being modified by user; even if they are root. SIP also disables any use of code-injection and debugging techniques for third-party software, so some of your favorite hacks may not work anymore.
71 | ...
72 |
73 | #### Completely disable SIP
74 |
75 | Although not recommended by Apple, you can entirely disable System Integrity Protection on you Mac. Here's how:
76 |
77 | Boot your Mac into Recovery Mode: reboot it and hold cmd+R until a progress bar appears.
78 | Choose the language and go to Utilities menu. Choose Terminal there.
79 | Enter this command to disable System Integrity Protection:
80 | ```
81 | $> csrutil disable
82 | ```
83 | It will ask you to reboot — do so and you're free from SIP!
84 |
85 | http://internals.exposed/blog/dtrace-vs-sip.html#fnref1
86 |
--------------------------------------------------------------------------------
/bin/ctrace:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | require('../index')();
4 |
--------------------------------------------------------------------------------
/data/errno.json:
--------------------------------------------------------------------------------
1 | {
2 | "darwin": {
3 | "1": {
4 | "code": "EPERM",
5 | "number": 1,
6 | "desc": "Operation not permitted"
7 | },
8 | "2": {
9 | "code": "ENOENT",
10 | "number": 2,
11 | "desc": "No such file or directory"
12 | },
13 | "3": {
14 | "code": "ESRCH",
15 | "number": 3,
16 | "desc": "No such process"
17 | },
18 | "4": {
19 | "code": "EINTR",
20 | "number": 4,
21 | "desc": "Interrupted function call"
22 | },
23 | "5": {
24 | "code": "EIO",
25 | "number": 5,
26 | "desc": "Input/output error"
27 | },
28 | "6": {
29 | "code": "ENXIO",
30 | "number": 6,
31 | "desc": "No such device or address"
32 | },
33 | "8": {
34 | "code": "ENOEXEC",
35 | "number": 8,
36 | "desc": "Exec format error"
37 | },
38 | "9": {
39 | "code": "EBADF",
40 | "number": 9,
41 | "desc": "Bad file descriptor"
42 | },
43 | "10": {
44 | "code": "ECHILD",
45 | "number": 10,
46 | "desc": "No child processes"
47 | },
48 | "11": {
49 | "code": "EDEADLK",
50 | "number": 11,
51 | "desc": "Resource deadlock avoided"
52 | },
53 | "12": {
54 | "code": "ENOMEM",
55 | "number": 12,
56 | "desc": "Cannot allocate memory"
57 | },
58 | "13": {
59 | "code": "EACCES",
60 | "number": 13,
61 | "desc": "Permission denied"
62 | },
63 | "14": {
64 | "code": "EFAULT",
65 | "number": 14,
66 | "desc": "Bad address"
67 | },
68 | "15": {
69 | "code": "ENOTBLK",
70 | "number": 15,
71 | "desc": "Not a block device"
72 | },
73 | "16": {
74 | "code": "EBUSY",
75 | "number": 16,
76 | "desc": "Resource busy"
77 | },
78 | "17": {
79 | "code": "EEXIST",
80 | "number": 17,
81 | "desc": "File exists"
82 | },
83 | "18": {
84 | "code": "EXDEV",
85 | "number": 18,
86 | "desc": "Improper link"
87 | },
88 | "19": {
89 | "code": "ENODEV",
90 | "number": 19,
91 | "desc": "Operation not supported by device"
92 | },
93 | "20": {
94 | "code": "ENOTDIR",
95 | "number": 20,
96 | "desc": "Not a directory"
97 | },
98 | "21": {
99 | "code": "EISDIR",
100 | "number": 21,
101 | "desc": "Is a directory"
102 | },
103 | "22": {
104 | "code": "EINVAL",
105 | "number": 22,
106 | "desc": "Invalid argument"
107 | },
108 | "23": {
109 | "code": "ENFILE",
110 | "number": 23,
111 | "desc": "Too many open files in system"
112 | },
113 | "24": {
114 | "code": "EMFILE",
115 | "number": 24,
116 | "desc": "Too many open files"
117 | },
118 | "25": {
119 | "code": "ENOTTY",
120 | "number": 25,
121 | "desc": "Inappropriate ioctl for device"
122 | },
123 | "26": {
124 | "code": "ETXTBSY",
125 | "number": 26,
126 | "desc": "Text file busy"
127 | },
128 | "27": {
129 | "code": "EFBIG",
130 | "number": 27,
131 | "desc": "File too large"
132 | },
133 | "28": {
134 | "code": "ENOSPC",
135 | "number": 28,
136 | "desc": "Device out of space"
137 | },
138 | "29": {
139 | "code": "ESPIPE",
140 | "number": 29,
141 | "desc": "Illegal seek"
142 | },
143 | "30": {
144 | "code": "EROFS",
145 | "number": 30,
146 | "desc": "Read-only file system"
147 | },
148 | "31": {
149 | "code": "EMLINK",
150 | "number": 31,
151 | "desc": "Too many links"
152 | },
153 | "32": {
154 | "code": "EPIPE",
155 | "number": 32,
156 | "desc": "Broken pipe"
157 | },
158 | "33": {
159 | "code": "EDOM",
160 | "number": 33,
161 | "desc": "Numerical argument out of domain"
162 | },
163 | "34": {
164 | "code": "ERANGE",
165 | "number": 34,
166 | "desc": "Numerical result out of range"
167 | },
168 | "35": {
169 | "code": "EAGAIN",
170 | "number": 35,
171 | "desc": "Resource temporarily unavailable"
172 | },
173 | "36": {
174 | "code": "EINPROGRESS",
175 | "number": 36,
176 | "desc": "Operation now in progress"
177 | },
178 | "37": {
179 | "code": "EALREADY",
180 | "number": 37,
181 | "desc": "Operation already in progress"
182 | },
183 | "38": {
184 | "code": "ENOTSOCK",
185 | "number": 38,
186 | "desc": "Socket operation on non-socket"
187 | },
188 | "39": {
189 | "code": "EDESTADDRREQ",
190 | "number": 39,
191 | "desc": "Destination address required"
192 | },
193 | "40": {
194 | "code": "EMSGSIZE",
195 | "number": 40,
196 | "desc": "Message too long"
197 | },
198 | "41": {
199 | "code": "EPROTOTYPE",
200 | "number": 41,
201 | "desc": "Protocol wrong type for socket"
202 | },
203 | "42": {
204 | "code": "ENOPROTOOPT",
205 | "number": 42,
206 | "desc": "Protocol not available"
207 | },
208 | "43": {
209 | "code": "EPROTONOSUPPORT",
210 | "number": 43,
211 | "desc": "Protocol not supported"
212 | },
213 | "44": {
214 | "code": "ESOCKTNOSUPPORT",
215 | "number": 44,
216 | "desc": "Socket type not supported"
217 | },
218 | "45": {
219 | "code": "ENOTSUP",
220 | "number": 45,
221 | "desc": "Not supported"
222 | },
223 | "46": {
224 | "code": "EPFNOSUPPORT",
225 | "number": 46,
226 | "desc": "Protocol family not supported"
227 | },
228 | "47": {
229 | "code": "EAFNOSUPPORT",
230 | "number": 47,
231 | "desc": "Address family not supported by protocol family"
232 | },
233 | "48": {
234 | "code": "EADDRINUSE",
235 | "number": 48,
236 | "desc": "Address already in use"
237 | },
238 | "49": {
239 | "code": "EADDRNOTAVAIL",
240 | "number": 49,
241 | "desc": "Cannot assign requested address"
242 | },
243 | "50": {
244 | "code": "ENETDOWN",
245 | "number": 50,
246 | "desc": "Network is down"
247 | },
248 | "51": {
249 | "code": "ENETUNREACH",
250 | "number": 51,
251 | "desc": "Network is unreachable"
252 | },
253 | "52": {
254 | "code": "ENETRESET",
255 | "number": 52,
256 | "desc": "Network dropped connection on reset"
257 | },
258 | "53": {
259 | "code": "ECONNABORTED",
260 | "number": 53,
261 | "desc": "Software caused connection abort"
262 | },
263 | "54": {
264 | "code": "ECONNRESET",
265 | "number": 54,
266 | "desc": "Connection reset by peer"
267 | },
268 | "55": {
269 | "code": "ENOBUFS",
270 | "number": 55,
271 | "desc": "No buffer space available"
272 | },
273 | "56": {
274 | "code": "EISCONN",
275 | "number": 56,
276 | "desc": "Socket is already connected"
277 | },
278 | "57": {
279 | "code": "ENOTCONN",
280 | "number": 57,
281 | "desc": "Socket is not connected"
282 | },
283 | "58": {
284 | "code": "ESHUTDOWN",
285 | "number": 58,
286 | "desc": "Cannot send after socket shutdown"
287 | },
288 | "60": {
289 | "code": "ETIMEDOUT",
290 | "number": 60,
291 | "desc": "Operation timed out"
292 | },
293 | "61": {
294 | "code": "ECONNREFUSED",
295 | "number": 61,
296 | "desc": "Connection refused"
297 | },
298 | "62": {
299 | "code": "ELOOP",
300 | "number": 62,
301 | "desc": "Too many levels of symbolic links"
302 | },
303 | "63": {
304 | "code": "ENAMETOOLONG",
305 | "number": 63,
306 | "desc": "File name too long"
307 | },
308 | "64": {
309 | "code": "EHOSTDOWN",
310 | "number": 64,
311 | "desc": "Host is down"
312 | },
313 | "65": {
314 | "code": "EHOSTUNREACH",
315 | "number": 65,
316 | "desc": "No route to host"
317 | },
318 | "66": {
319 | "code": "ENOTEMPTY",
320 | "number": 66,
321 | "desc": "Directory not empty"
322 | },
323 | "67": {
324 | "code": "EPROCLIM",
325 | "number": 67,
326 | "desc": "Too many processes"
327 | },
328 | "68": {
329 | "code": "EUSERS",
330 | "number": 68,
331 | "desc": "Too many users"
332 | },
333 | "69": {
334 | "code": "EDQUOT",
335 | "number": 69,
336 | "desc": "Disc quota exceeded"
337 | },
338 | "70": {
339 | "code": "ESTALE",
340 | "number": 70,
341 | "desc": "Stale NFS file handle"
342 | },
343 | "72": {
344 | "code": "EBADRPC",
345 | "number": 72,
346 | "desc": "RPC struct is bad"
347 | },
348 | "73": {
349 | "code": "ERPCMISMATCH",
350 | "number": 73,
351 | "desc": "RPC version wrong"
352 | },
353 | "74": {
354 | "code": "EPROGUNAVAIL",
355 | "number": 74,
356 | "desc": "RPC prog"
357 | },
358 | "75": {
359 | "code": "EPROGMISMATCH",
360 | "number": 75,
361 | "desc": "Program version wrong"
362 | },
363 | "76": {
364 | "code": "EPROCUNAVAIL",
365 | "number": 76,
366 | "desc": "Bad procedure for program"
367 | },
368 | "77": {
369 | "code": "ENOLCK",
370 | "number": 77,
371 | "desc": "No locks available"
372 | },
373 | "78": {
374 | "code": "ENOSYS",
375 | "number": 78,
376 | "desc": "Function not implemented"
377 | },
378 | "79": {
379 | "code": "EFTYPE",
380 | "number": 79,
381 | "desc": "Inappropriate file type or format"
382 | },
383 | "80": {
384 | "code": "EAUTH",
385 | "number": 80,
386 | "desc": "Authentication error"
387 | },
388 | "81": {
389 | "code": "ENEEDAUTH",
390 | "number": 81,
391 | "desc": "Need authenticator"
392 | },
393 | "82": {
394 | "code": "EPWROFF",
395 | "number": 82,
396 | "desc": "Device power is off"
397 | },
398 | "83": {
399 | "code": "EDEVERR",
400 | "number": 83,
401 | "desc": "Device error"
402 | },
403 | "84": {
404 | "code": "EOVERFLOW",
405 | "number": 84,
406 | "desc": "Value too large to be stored in data type"
407 | },
408 | "85": {
409 | "code": "EBADEXEC",
410 | "number": 85,
411 | "desc": "Bad executable (or shared library)"
412 | },
413 | "86": {
414 | "code": "EBADARCH",
415 | "number": 86,
416 | "desc": "Bad CPU type in executable"
417 | },
418 | "87": {
419 | "code": "ESHLIBVERS",
420 | "number": 87,
421 | "desc": "Shared library version mismatch"
422 | },
423 | "88": {
424 | "code": "EBADMACHO",
425 | "number": 88,
426 | "desc": "Malformed Mach-o file"
427 | },
428 | "89": {
429 | "code": "ECANCELED",
430 | "number": 89,
431 | "desc": "Operation canceled"
432 | },
433 | "90": {
434 | "code": "EIDRM",
435 | "number": 90,
436 | "desc": "Identifier removed"
437 | },
438 | "91": {
439 | "code": "ENOMSG",
440 | "number": 91,
441 | "desc": "No message of desired type"
442 | },
443 | "92": {
444 | "code": "EILSEQ",
445 | "number": 92,
446 | "desc": "Illegal byte sequence"
447 | },
448 | "93": {
449 | "code": "ENOATTR",
450 | "number": 93,
451 | "desc": "Attribute not found"
452 | },
453 | "94": {
454 | "code": "EBADMSG",
455 | "number": 94,
456 | "desc": "Bad message"
457 | },
458 | "95": {
459 | "code": "EMULTIHOP",
460 | "number": 95,
461 | "desc": "Reserved"
462 | },
463 | "96": {
464 | "code": "ENODATA",
465 | "number": 96,
466 | "desc": "No message available"
467 | },
468 | "97": {
469 | "code": "ENOLINK",
470 | "number": 97,
471 | "desc": "Reserved"
472 | },
473 | "98": {
474 | "code": "ENOSR",
475 | "number": 98,
476 | "desc": "No STREAM resources"
477 | },
478 | "99": {
479 | "code": "ENOSTR",
480 | "number": 99,
481 | "desc": "Not a STREAM"
482 | },
483 | "100": {
484 | "code": "EPROTO",
485 | "number": 100,
486 | "desc": "Protocol error"
487 | },
488 | "101": {
489 | "code": "ETIME",
490 | "number": 101,
491 | "desc": "STREAM ioctl() timeout"
492 | },
493 | "102": {
494 | "code": "EOPNOTSUPP",
495 | "number": 102,
496 | "desc": "Operation not supported on socket"
497 | }
498 | }
499 | }
500 |
--------------------------------------------------------------------------------
/data/npm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/automation-stack/ctrace/be380f921e4f0aa366eacfcbebadf49d6578ea0b/data/npm.png
--------------------------------------------------------------------------------
/data/syscalls.json:
--------------------------------------------------------------------------------
1 | {
2 | "name_to_handle_at": {
3 | "linux": {
4 | "number": 303,
5 | "name": "name_to_handle_at",
6 | "desc": "obtain handle for a pathname"
7 | }
8 | },
9 | "posix_spawn": {
10 | "darwin": {
11 | "number": 244,
12 | "name": "posix_spawn",
13 | "desc": "spawn a process"
14 | }
15 | },
16 | "getlcid": {
17 | "darwin": {
18 | "number": 395,
19 | "name": "getlcid",
20 | "desc": "get login context"
21 | }
22 | },
23 | "revoke": {
24 | "darwin": {
25 | "number": 56,
26 | "name": "revoke",
27 | "desc": "revoke file access"
28 | }
29 | },
30 | "workq_open": {
31 | "darwin": {
32 | "name": "workq_open",
33 | "number": 367
34 | }
35 | },
36 | "vmsplice": {
37 | "linux": {
38 | "number": 532,
39 | "name": "vmsplice",
40 | "desc": "splice user pages into a pipe"
41 | }
42 | },
43 | "setfsuid": {
44 | "linux": {
45 | "number": 122,
46 | "name": "setfsuid",
47 | "desc": "set user identity used for filesystem checks"
48 | }
49 | },
50 | "aio_read": {
51 | "darwin": {
52 | "number": 318,
53 | "name": "aio_read",
54 | "desc": "asynchronous read from a file (REALTIME)"
55 | }
56 | },
57 | "mq_unlink": {
58 | "linux": {
59 | "number": 241,
60 | "name": "mq_unlink",
61 | "desc": "remove a message queue"
62 | }
63 | },
64 | "fsgetpath": {
65 | "darwin": {
66 | "name": "fsgetpath",
67 | "number": 427
68 | }
69 | },
70 | "thread_selfusage": {
71 | "darwin": {
72 | "name": "thread_selfusage",
73 | "number": 482
74 | }
75 | },
76 | "newfstatat": {
77 | "linux": {
78 | "number": 262,
79 | "name": "newfstatat",
80 | "desc": "get file status"
81 | }
82 | },
83 | "kqueue": {
84 | "darwin": {
85 | "number": 362,
86 | "name": "kqueue",
87 | "desc": "kernel event notification mechanism"
88 | }
89 | },
90 | "getresgid": {
91 | "linux": {
92 | "number": 120,
93 | "name": "getresgid",
94 | "desc": "get real, effective and saved user/group IDs"
95 | }
96 | },
97 | "mkdir_extended": {
98 | "darwin": {
99 | "name": "mkdir_extended",
100 | "number": 292
101 | }
102 | },
103 | "kevent64": {
104 | "darwin": {
105 | "number": 369,
106 | "name": "kevent64",
107 | "desc": "kernel event notification mechanism"
108 | }
109 | },
110 | "__sigwait_nocancel": {
111 | "darwin": {
112 | "name": "__sigwait_nocancel",
113 | "number": 422
114 | }
115 | },
116 | "sched_getaffinity": {
117 | "linux": {
118 | "number": 204,
119 | "name": "sched_getaffinity",
120 | "desc": "set and get a thread's CPU"
121 | }
122 | },
123 | "fadvise64": {
124 | "linux": {
125 | "number": 221,
126 | "name": "fadvise64",
127 | "desc": "predeclare an access pattern for file data"
128 | }
129 | },
130 | "sched_setparam": {
131 | "linux": {
132 | "number": 142,
133 | "name": "sched_setparam",
134 | "desc": "set and get scheduling parameters"
135 | }
136 | },
137 | "csrctl": {
138 | "darwin": {
139 | "name": "csrctl",
140 | "number": 483
141 | }
142 | },
143 | "shm_unlink": {
144 | "darwin": {
145 | "number": 267,
146 | "name": "shm_unlink",
147 | "desc": "remove shared memory object"
148 | }
149 | },
150 | "signalfd4": {
151 | "linux": {
152 | "number": 289,
153 | "name": "signalfd4",
154 | "desc": "create a file descriptor for accepting signals"
155 | }
156 | },
157 | "memfd_create": {
158 | "linux": {
159 | "number": 319,
160 | "name": "memfd_create",
161 | "desc": "create an anonymous file"
162 | }
163 | },
164 | "aio_suspend": {
165 | "darwin": {
166 | "number": 315,
167 | "name": "aio_suspend",
168 | "desc": "suspend until asynchronous I/O operations or timeout complete (REALTIME)"
169 | }
170 | },
171 | "remap_file_pages": {
172 | "linux": {
173 | "number": 216,
174 | "name": "remap_file_pages",
175 | "desc": "create a nonlinear file mapping"
176 | }
177 | },
178 | "connectx": {
179 | "darwin": {
180 | "name": "connectx",
181 | "number": 447
182 | }
183 | },
184 | "aio_cancel": {
185 | "darwin": {
186 | "number": 316,
187 | "name": "aio_cancel",
188 | "desc": "cancel an outstanding asynchronous I/O operation (REALTIME)"
189 | }
190 | },
191 | "psynch_rw_yieldwrlock": {
192 | "darwin": {
193 | "name": "psynch_rw_yieldwrlock",
194 | "number": 298
195 | }
196 | },
197 | "getppid": {
198 | "darwin": {
199 | "number": 39,
200 | "name": "getppid",
201 | "desc": "get parent or calling process identification"
202 | },
203 | "linux": {
204 | "number": 110,
205 | "name": "getppid",
206 | "desc": "get process identification"
207 | }
208 | },
209 | "seteuid": {
210 | "darwin": {
211 | "number": 183,
212 | "name": "seteuid",
213 | "desc": "set user and group ID"
214 | }
215 | },
216 | "capget": {
217 | "linux": {
218 | "number": 125,
219 | "name": "capget",
220 | "desc": "set/get capabilities of thread(s)"
221 | }
222 | },
223 | "msgsnd_nocancel": {
224 | "darwin": {
225 | "name": "msgsnd_nocancel",
226 | "number": 418
227 | }
228 | },
229 | "getauid": {
230 | "darwin": {
231 | "number": 353,
232 | "name": "getauid",
233 | "desc": "retrieve audit user ID"
234 | }
235 | },
236 | "utime": {
237 | "linux": {
238 | "number": 132,
239 | "name": "utime",
240 | "desc": "change file last access and modification times"
241 | }
242 | },
243 | "sched_setaffinity": {
244 | "linux": {
245 | "number": 203,
246 | "name": "sched_setaffinity",
247 | "desc": "set and get a thread's CPU"
248 | }
249 | },
250 | "recvmsg_x": {
251 | "darwin": {
252 | "name": "recvmsg_x",
253 | "number": 480
254 | }
255 | },
256 | "issetugid": {
257 | "darwin": {
258 | "number": 327,
259 | "name": "issetugid",
260 | "desc": "is current process tainted by uid or gid changes"
261 | }
262 | },
263 | "unshare": {
264 | "linux": {
265 | "number": 272,
266 | "name": "unshare",
267 | "desc": "disassociate parts of the process execution context"
268 | }
269 | },
270 | "recvfrom": {
271 | "darwin": {
272 | "number": 29,
273 | "name": "recvfrom",
274 | "desc": "receive a message from a socket"
275 | },
276 | "linux": {
277 | "number": 517,
278 | "name": "recvfrom",
279 | "desc": "receive a message from a socket"
280 | }
281 | },
282 | "sched_get_priority_max": {
283 | "linux": {
284 | "number": 146,
285 | "name": "sched_get_priority_max",
286 | "desc": "get static priority"
287 | }
288 | },
289 | "setlogin": {
290 | "darwin": {
291 | "number": 50,
292 | "name": "setlogin",
293 | "desc": "get/set login name"
294 | }
295 | },
296 | "epoll_create1": {
297 | "linux": {
298 | "number": 291,
299 | "name": "epoll_create1",
300 | "desc": "open an epoll file descriptor"
301 | }
302 | },
303 | "audit_session_port": {
304 | "darwin": {
305 | "name": "audit_session_port",
306 | "number": 432
307 | }
308 | },
309 | "inotify_init": {
310 | "linux": {
311 | "number": 253,
312 | "name": "inotify_init",
313 | "desc": "initialize an inotify instance"
314 | }
315 | },
316 | "sync": {
317 | "darwin": {
318 | "number": 36,
319 | "name": "sync",
320 | "desc": "synchronize disk block in-core status with that on disk"
321 | },
322 | "linux": {
323 | "number": 162,
324 | "name": "sync",
325 | "desc": "commit filesystem caches to disk"
326 | }
327 | },
328 | "nfsclnt": {
329 | "darwin": {
330 | "number": 247,
331 | "name": "nfsclnt",
332 | "desc": "NFS client services"
333 | }
334 | },
335 | "syslog": {
336 | "linux": {
337 | "number": 103,
338 | "name": "syslog",
339 | "desc": "read and/or clear kernel message ring buffer; set"
340 | }
341 | },
342 | "mknod": {
343 | "darwin": {
344 | "number": 14,
345 | "name": "mknod",
346 | "desc": "make a special file node"
347 | },
348 | "linux": {
349 | "number": 133,
350 | "name": "mknod",
351 | "desc": "create a special or ordinary file"
352 | }
353 | },
354 | "guarded_kqueue_np": {
355 | "darwin": {
356 | "name": "guarded_kqueue_np",
357 | "number": 443
358 | }
359 | },
360 | "pwritev": {
361 | "linux": {
362 | "number": 535,
363 | "name": "pwritev",
364 | "desc": "read or write data into multiple"
365 | }
366 | },
367 | "llistxattr": {
368 | "linux": {
369 | "number": 195,
370 | "name": "llistxattr",
371 | "desc": "list extended attribute names"
372 | }
373 | },
374 | "lookup_dcookie": {
375 | "linux": {
376 | "number": 212,
377 | "name": "lookup_dcookie",
378 | "desc": "return a directory entry's path"
379 | }
380 | },
381 | "rt_sigprocmask": {
382 | "linux": {
383 | "number": 14,
384 | "name": "rt_sigprocmask",
385 | "desc": "examine and change blocked signals"
386 | }
387 | },
388 | "psynch_rw_downgrade": {
389 | "darwin": {
390 | "name": "psynch_rw_downgrade",
391 | "number": 299
392 | }
393 | },
394 | "getrandom": {
395 | "linux": {
396 | "number": 318,
397 | "name": "getrandom",
398 | "desc": "obtain a series of random bytes"
399 | }
400 | },
401 | "memorystatus_control": {
402 | "darwin": {
403 | "name": "memorystatus_control",
404 | "number": 440
405 | }
406 | },
407 | "ioperm": {
408 | "linux": {
409 | "number": 173,
410 | "name": "ioperm",
411 | "desc": "set port input/output permissions"
412 | }
413 | },
414 | "nfssvc": {
415 | "darwin": {
416 | "number": 155,
417 | "name": "nfssvc",
418 | "desc": "NFS services"
419 | }
420 | },
421 | "munmap": {
422 | "darwin": {
423 | "number": 73,
424 | "name": "munmap",
425 | "desc": "remove a mapping"
426 | },
427 | "linux": {
428 | "number": 11,
429 | "name": "munmap",
430 | "desc": "map or unmap files or devices into memory"
431 | }
432 | },
433 | "socketpair": {
434 | "darwin": {
435 | "number": 135,
436 | "name": "socketpair",
437 | "desc": "create a pair of connected sockets"
438 | },
439 | "linux": {
440 | "number": 53,
441 | "name": "socketpair",
442 | "desc": "create a pair of connected sockets"
443 | }
444 | },
445 | "settimeofday": {
446 | "darwin": {
447 | "number": 122,
448 | "name": "settimeofday",
449 | "desc": "get/set date and time"
450 | },
451 | "linux": {
452 | "number": 164,
453 | "name": "settimeofday",
454 | "desc": "get / set time"
455 | }
456 | },
457 | "setresuid": {
458 | "linux": {
459 | "number": 117,
460 | "name": "setresuid",
461 | "desc": "set real, effective and saved user or group ID"
462 | }
463 | },
464 | "gethostuuid": {
465 | "darwin": {
466 | "number": 142,
467 | "name": "gethostuuid",
468 | "desc": "return a unique identifier for the current machine"
469 | }
470 | },
471 | "setpgid": {
472 | "darwin": {
473 | "number": 82,
474 | "name": "setpgid",
475 | "desc": "set process group"
476 | },
477 | "linux": {
478 | "number": 109,
479 | "name": "setpgid",
480 | "desc": "set/get process group"
481 | }
482 | },
483 | "csops": {
484 | "darwin": {
485 | "name": "csops",
486 | "number": 169
487 | }
488 | },
489 | "sethostname": {
490 | "linux": {
491 | "number": 170,
492 | "name": "sethostname",
493 | "desc": "get/set hostname"
494 | }
495 | },
496 | "timer_settime": {
497 | "linux": {
498 | "number": 223,
499 | "name": "timer_settime",
500 | "desc": "arm/disarm and fetch state of POSIX"
501 | }
502 | },
503 | "setregid": {
504 | "darwin": {
505 | "number": 127,
506 | "name": "setregid",
507 | "desc": "set real and effective group ID"
508 | },
509 | "linux": {
510 | "number": 114,
511 | "name": "setregid",
512 | "desc": "set real and/or effective user or group ID"
513 | }
514 | },
515 | "fchdir": {
516 | "darwin": {
517 | "number": 13,
518 | "name": "fchdir",
519 | "desc": "change current working directory"
520 | },
521 | "linux": {
522 | "number": 81,
523 | "name": "fchdir",
524 | "desc": "change working directory"
525 | }
526 | },
527 | "ioprio_get": {
528 | "linux": {
529 | "number": 252,
530 | "name": "ioprio_get",
531 | "desc": "get/set I/O scheduling class and priority"
532 | }
533 | },
534 | "msgsnd": {
535 | "darwin": {
536 | "name": "msgsnd",
537 | "number": 260
538 | },
539 | "linux": {
540 | "number": 69,
541 | "name": "msgsnd",
542 | "desc": "System V message queue operations"
543 | }
544 | },
545 | "getsid": {
546 | "darwin": {
547 | "number": 310,
548 | "name": "getsid",
549 | "desc": "get process session"
550 | },
551 | "linux": {
552 | "number": 124,
553 | "name": "getsid",
554 | "desc": "get session ID"
555 | }
556 | },
557 | "fgetattrlist": {
558 | "darwin": {
559 | "number": 228,
560 | "name": "fgetattrlist",
561 | "desc": "get file system attributes"
562 | }
563 | },
564 | "eventfd": {
565 | "linux": {
566 | "number": 284,
567 | "name": "eventfd",
568 | "desc": "create a file descriptor for event notification"
569 | }
570 | },
571 | "process_vm_readv": {
572 | "linux": {
573 | "number": 539,
574 | "name": "process_vm_readv",
575 | "desc": "transfer data between process"
576 | }
577 | },
578 | "pipe2": {
579 | "linux": {
580 | "number": 293,
581 | "name": "pipe2",
582 | "desc": "create pipe"
583 | }
584 | },
585 | "setlcid": {
586 | "darwin": {
587 | "number": 394,
588 | "name": "setlcid",
589 | "desc": "set login context"
590 | }
591 | },
592 | "perf_event_open": {
593 | "linux": {
594 | "number": 298,
595 | "name": "perf_event_open",
596 | "desc": "set up performance monitoring"
597 | }
598 | },
599 | "sendmsg": {
600 | "darwin": {
601 | "number": 28,
602 | "name": "sendmsg",
603 | "desc": "send a message from a socket"
604 | },
605 | "linux": {
606 | "number": 518,
607 | "name": "sendmsg",
608 | "desc": "send a message on a socket"
609 | }
610 | },
611 | "guarded_open_dprotected_np": {
612 | "darwin": {
613 | "name": "guarded_open_dprotected_np",
614 | "number": 484
615 | }
616 | },
617 | "epoll_ctl": {
618 | "linux": {
619 | "number": 233,
620 | "name": "epoll_ctl",
621 | "desc": "control interface for an epoll file descriptor"
622 | }
623 | },
624 | "getcpu": {
625 | "linux": {
626 | "number": 309,
627 | "name": "getcpu",
628 | "desc": "determine CPU and NUMA node on which the calling thread is"
629 | }
630 | },
631 | "semsys": {
632 | "darwin": {
633 | "name": "semsys",
634 | "number": 251
635 | }
636 | },
637 | "umask": {
638 | "darwin": {
639 | "number": 60,
640 | "name": "umask",
641 | "desc": "set file creation mode mask"
642 | },
643 | "linux": {
644 | "number": 95,
645 | "name": "umask",
646 | "desc": "set file mode creation mask"
647 | }
648 | },
649 | "brk": {
650 | "linux": {
651 | "number": 12,
652 | "name": "brk",
653 | "desc": "change data segment size"
654 | }
655 | },
656 | "sched_rr_get_interval": {
657 | "linux": {
658 | "number": 148,
659 | "name": "sched_rr_get_interval",
660 | "desc": "get the SCHED_RR interval for the named"
661 | }
662 | },
663 | "close_nocancel": {
664 | "darwin": {
665 | "name": "close_nocancel",
666 | "number": 399
667 | }
668 | },
669 | "clock_settime": {
670 | "linux": {
671 | "number": 227,
672 | "name": "clock_settime",
673 | "desc": "clock and time functions"
674 | }
675 | },
676 | "select": {
677 | "darwin": {
678 | "number": 93,
679 | "name": "select",
680 | "desc": "synchronous I/O multiplexing"
681 | },
682 | "linux": {
683 | "number": 23,
684 | "name": "select",
685 | "desc": "synchronous I/O multiplexing"
686 | }
687 | },
688 | "getsockopt": {
689 | "darwin": {
690 | "number": 118,
691 | "name": "getsockopt",
692 | "desc": "get and set options on sockets"
693 | },
694 | "linux": {
695 | "number": 542,
696 | "name": "getsockopt",
697 | "desc": "get and set options on sockets"
698 | }
699 | },
700 | "getpriority": {
701 | "darwin": {
702 | "number": 100,
703 | "name": "getpriority",
704 | "desc": "get/set program scheduling priority"
705 | },
706 | "linux": {
707 | "number": 140,
708 | "name": "getpriority",
709 | "desc": "get/set program scheduling priority"
710 | }
711 | },
712 | "aio_write": {
713 | "darwin": {
714 | "number": 319,
715 | "name": "aio_write",
716 | "desc": "asynchronous write to a file (REALTIME)"
717 | }
718 | },
719 | "fdatasync": {
720 | "darwin": {
721 | "name": "fdatasync",
722 | "number": 187
723 | },
724 | "linux": {
725 | "number": 75,
726 | "name": "fdatasync",
727 | "desc": "synchronize a file's in-core state with storage"
728 | }
729 | },
730 | "setns": {
731 | "linux": {
732 | "number": 308,
733 | "name": "setns",
734 | "desc": "reassociate thread with a namespace"
735 | }
736 | },
737 | "guarded_writev_np": {
738 | "darwin": {
739 | "name": "guarded_writev_np",
740 | "number": 487
741 | }
742 | },
743 | "bsdthread_create": {
744 | "darwin": {
745 | "name": "bsdthread_create",
746 | "number": 360
747 | }
748 | },
749 | "accept4": {
750 | "linux": {
751 | "number": 288,
752 | "name": "accept4",
753 | "desc": "accept a connection on a socket"
754 | }
755 | },
756 | "__pthread_kill": {
757 | "darwin": {
758 | "name": "__pthread_kill",
759 | "number": 328
760 | }
761 | },
762 | "pathconf": {
763 | "darwin": {
764 | "number": 191,
765 | "name": "pathconf",
766 | "desc": "get configurable pathname variables"
767 | }
768 | },
769 | "sched_getscheduler": {
770 | "linux": {
771 | "number": 145,
772 | "name": "sched_getscheduler",
773 | "desc": "set and get scheduling pol\u2010"
774 | }
775 | },
776 | "stat_extended": {
777 | "darwin": {
778 | "name": "stat_extended",
779 | "number": 279
780 | }
781 | },
782 | "gettimeofday": {
783 | "darwin": {
784 | "number": 116,
785 | "name": "gettimeofday",
786 | "desc": "get/set date and time"
787 | },
788 | "linux": {
789 | "number": 96,
790 | "name": "gettimeofday",
791 | "desc": "get / set time"
792 | }
793 | },
794 | "lstat64_extended": {
795 | "darwin": {
796 | "name": "lstat64_extended",
797 | "number": 342
798 | }
799 | },
800 | "sem_open": {
801 | "darwin": {
802 | "number": 268,
803 | "name": "sem_open",
804 | "desc": "initialize and open a named semaphore"
805 | }
806 | },
807 | "socket": {
808 | "darwin": {
809 | "number": 97,
810 | "name": "socket",
811 | "desc": "create an endpoint for communication"
812 | },
813 | "linux": {
814 | "number": 41,
815 | "name": "socket",
816 | "desc": "create an endpoint for communication"
817 | }
818 | },
819 | "chdir": {
820 | "darwin": {
821 | "number": 12,
822 | "name": "chdir",
823 | "desc": "change current working directory"
824 | },
825 | "linux": {
826 | "number": 80,
827 | "name": "chdir",
828 | "desc": "change working directory"
829 | }
830 | },
831 | "inotify_init1": {
832 | "linux": {
833 | "number": 294,
834 | "name": "inotify_init1",
835 | "desc": "initialize an inotify instance"
836 | }
837 | },
838 | "sched_getattr": {
839 | "linux": {
840 | "number": 315,
841 | "name": "sched_getattr",
842 | "desc": "set and get scheduling policy and"
843 | }
844 | },
845 | "coalition": {
846 | "darwin": {
847 | "name": "coalition",
848 | "number": 458
849 | }
850 | },
851 | "setuid": {
852 | "darwin": {
853 | "number": 23,
854 | "name": "setuid",
855 | "desc": "set user and group ID"
856 | },
857 | "linux": {
858 | "number": 105,
859 | "name": "setuid",
860 | "desc": "set user identity"
861 | }
862 | },
863 | "utimensat": {
864 | "linux": {
865 | "number": 280,
866 | "name": "utimensat",
867 | "desc": "change file timestamps with nanosecond preci\u2010"
868 | }
869 | },
870 | "sfi_pidctl": {
871 | "darwin": {
872 | "name": "sfi_pidctl",
873 | "number": 457
874 | }
875 | },
876 | "ftruncate": {
877 | "darwin": {
878 | "number": 201,
879 | "name": "ftruncate",
880 | "desc": "truncate or extend a file to a specified length"
881 | },
882 | "linux": {
883 | "number": 77,
884 | "name": "ftruncate",
885 | "desc": "truncate a file to a specified length"
886 | }
887 | },
888 | "vfork": {
889 | "darwin": {
890 | "number": 66,
891 | "name": "vfork",
892 | "desc": "spawn new process in a virtual memory efficient way"
893 | },
894 | "linux": {
895 | "number": 58,
896 | "name": "vfork",
897 | "desc": "create a child process and block parent"
898 | }
899 | },
900 | "io_setup": {
901 | "linux": {
902 | "number": 543,
903 | "name": "io_setup",
904 | "desc": "create an asynchronous I/O context"
905 | }
906 | },
907 | "mprotect": {
908 | "darwin": {
909 | "number": 74,
910 | "name": "mprotect",
911 | "desc": "control the protection of pages"
912 | },
913 | "linux": {
914 | "number": 10,
915 | "name": "mprotect",
916 | "desc": "set protection on a region of memory"
917 | }
918 | },
919 | "sem_trywait": {
920 | "darwin": {
921 | "number": 272,
922 | "name": "sem_trywait",
923 | "desc": "lock a semaphore"
924 | }
925 | },
926 | "accept": {
927 | "darwin": {
928 | "number": 30,
929 | "name": "accept",
930 | "desc": "accept a connection on a socket"
931 | },
932 | "linux": {
933 | "number": 43,
934 | "name": "accept",
935 | "desc": "accept a connection on a socket"
936 | }
937 | },
938 | "io_destroy": {
939 | "linux": {
940 | "number": 207,
941 | "name": "io_destroy",
942 | "desc": "destroy an asynchronous I/O context"
943 | }
944 | },
945 | "timerfd_create": {
946 | "linux": {
947 | "number": 283,
948 | "name": "timerfd_create",
949 | "desc": "timers that notify"
950 | }
951 | },
952 | "chroot": {
953 | "darwin": {
954 | "number": 61,
955 | "name": "chroot",
956 | "desc": "change root directory"
957 | },
958 | "linux": {
959 | "number": 161,
960 | "name": "chroot",
961 | "desc": "change root directory"
962 | }
963 | },
964 | "open_dprotected_np": {
965 | "darwin": {
966 | "name": "open_dprotected_np",
967 | "number": 216
968 | }
969 | },
970 | "getgroups": {
971 | "darwin": {
972 | "number": 79,
973 | "name": "getgroups",
974 | "desc": "get group access list"
975 | },
976 | "linux": {
977 | "number": 115,
978 | "name": "getgroups",
979 | "desc": "get/set list of supplementary group IDs"
980 | }
981 | },
982 | "ledger": {
983 | "darwin": {
984 | "name": "ledger",
985 | "number": 373
986 | }
987 | },
988 | "writev_nocancel": {
989 | "darwin": {
990 | "name": "writev_nocancel",
991 | "number": 412
992 | }
993 | },
994 | "fhopen": {
995 | "darwin": {
996 | "number": 248,
997 | "name": "fhopen",
998 | "desc": "open a file by file handle"
999 | }
1000 | },
1001 | "stack_snapshot": {
1002 | "darwin": {
1003 | "name": "stack_snapshot",
1004 | "number": 365
1005 | }
1006 | },
1007 | "__mac_get_link": {
1008 | "darwin": {
1009 | "name": "__mac_get_link",
1010 | "number": 384
1011 | }
1012 | },
1013 | "openat": {
1014 | "darwin": {
1015 | "name": "openat",
1016 | "number": 463
1017 | },
1018 | "linux": {
1019 | "number": 257,
1020 | "name": "openat",
1021 | "desc": "open and possibly create a file"
1022 | }
1023 | },
1024 | "clone": {
1025 | "linux": {
1026 | "number": 56,
1027 | "name": "clone",
1028 | "desc": "create a child process"
1029 | }
1030 | },
1031 | "getxattr": {
1032 | "darwin": {
1033 | "number": 234,
1034 | "name": "getxattr",
1035 | "desc": "get an extended attribute value"
1036 | },
1037 | "linux": {
1038 | "number": 191,
1039 | "name": "getxattr",
1040 | "desc": "retrieve an extended attribute value"
1041 | }
1042 | },
1043 | "getdirentries64": {
1044 | "darwin": {
1045 | "name": "getdirentries64",
1046 | "number": 344
1047 | }
1048 | },
1049 | "ioctl": {
1050 | "darwin": {
1051 | "number": 54,
1052 | "name": "ioctl",
1053 | "desc": "control device"
1054 | },
1055 | "linux": {
1056 | "number": 514,
1057 | "name": "ioctl",
1058 | "desc": "control device"
1059 | }
1060 | },
1061 | "kcmp": {
1062 | "linux": {
1063 | "number": 312,
1064 | "name": "kcmp",
1065 | "desc": "compare two processes to determine if they share a kernel"
1066 | }
1067 | },
1068 | "setgroups": {
1069 | "darwin": {
1070 | "number": 80,
1071 | "name": "setgroups",
1072 | "desc": "set group access list"
1073 | },
1074 | "linux": {
1075 | "number": 116,
1076 | "name": "setgroups",
1077 | "desc": "get/set list of supplementary group IDs"
1078 | }
1079 | },
1080 | "unlink": {
1081 | "darwin": {
1082 | "number": 10,
1083 | "name": "unlink",
1084 | "desc": "remove directory entry"
1085 | },
1086 | "linux": {
1087 | "number": 87,
1088 | "name": "unlink",
1089 | "desc": "delete a name and possibly the file it refers to"
1090 | }
1091 | },
1092 | "searchfs": {
1093 | "darwin": {
1094 | "number": 225,
1095 | "name": "searchfs",
1096 | "desc": "search a volume quickly"
1097 | }
1098 | },
1099 | "audit_session_self": {
1100 | "darwin": {
1101 | "name": "audit_session_self",
1102 | "number": 428
1103 | }
1104 | },
1105 | "mkfifo_extended": {
1106 | "darwin": {
1107 | "name": "mkfifo_extended",
1108 | "number": 291
1109 | }
1110 | },
1111 | "bind": {
1112 | "darwin": {
1113 | "number": 104,
1114 | "name": "bind",
1115 | "desc": "bind a name to a socket"
1116 | },
1117 | "linux": {
1118 | "number": 49,
1119 | "name": "bind",
1120 | "desc": "bind a name to a socket"
1121 | }
1122 | },
1123 | "recvmmsg": {
1124 | "linux": {
1125 | "number": 537,
1126 | "name": "recvmmsg",
1127 | "desc": "receive multiple messages on a socket"
1128 | }
1129 | },
1130 | "shm_open": {
1131 | "darwin": {
1132 | "number": 266,
1133 | "name": "shm_open",
1134 | "desc": "open a shared memory object"
1135 | }
1136 | },
1137 | "pwrite_nocancel": {
1138 | "darwin": {
1139 | "name": "pwrite_nocancel",
1140 | "number": 415
1141 | }
1142 | },
1143 | "ppoll": {
1144 | "linux": {
1145 | "number": 271,
1146 | "name": "ppoll",
1147 | "desc": "wait for some event on a file descriptor"
1148 | }
1149 | },
1150 | "syncfs": {
1151 | "linux": {
1152 | "number": 306,
1153 | "name": "syncfs",
1154 | "desc": "commit filesystem caches to disk"
1155 | }
1156 | },
1157 | "sysctl": {
1158 | "darwin": {
1159 | "number": 202,
1160 | "name": "sysctl",
1161 | "desc": "get or set system information"
1162 | }
1163 | },
1164 | "msgrcv": {
1165 | "darwin": {
1166 | "name": "msgrcv",
1167 | "number": 261
1168 | },
1169 | "linux": {
1170 | "number": 70,
1171 | "name": "msgrcv",
1172 | "desc": "System V message queue operations"
1173 | }
1174 | },
1175 | "uname": {
1176 | "linux": {
1177 | "number": 63,
1178 | "name": "uname",
1179 | "desc": "get name and information about current kernel"
1180 | }
1181 | },
1182 | "swapoff": {
1183 | "linux": {
1184 | "number": 168,
1185 | "name": "swapoff",
1186 | "desc": "start/stop swapping to file/device"
1187 | }
1188 | },
1189 | "sem_unlink": {
1190 | "darwin": {
1191 | "number": 270,
1192 | "name": "sem_unlink",
1193 | "desc": "remove a named semaphore"
1194 | }
1195 | },
1196 | "readahead": {
1197 | "linux": {
1198 | "number": 187,
1199 | "name": "readahead",
1200 | "desc": "initiate file readahead into page cache"
1201 | }
1202 | },
1203 | "stat64_extended": {
1204 | "darwin": {
1205 | "name": "stat64_extended",
1206 | "number": 341
1207 | }
1208 | },
1209 | "write": {
1210 | "darwin": {
1211 | "number": 4,
1212 | "name": "write",
1213 | "desc": "write output"
1214 | },
1215 | "linux": {
1216 | "number": 1,
1217 | "name": "write",
1218 | "desc": "write to a file descriptor"
1219 | }
1220 | },
1221 | "getpid": {
1222 | "darwin": {
1223 | "number": 20,
1224 | "name": "getpid",
1225 | "desc": "get parent or calling process identification"
1226 | },
1227 | "linux": {
1228 | "number": 39,
1229 | "name": "getpid",
1230 | "desc": "get process identification"
1231 | }
1232 | },
1233 | "setgid": {
1234 | "darwin": {
1235 | "number": 181,
1236 | "name": "setgid",
1237 | "desc": "set user and group ID"
1238 | },
1239 | "linux": {
1240 | "number": 106,
1241 | "name": "setgid",
1242 | "desc": "set group identity"
1243 | }
1244 | },
1245 | "pivot_root": {
1246 | "linux": {
1247 | "number": 155,
1248 | "name": "pivot_root",
1249 | "desc": "change the root filesystem"
1250 | }
1251 | },
1252 | "modify_ldt": {
1253 | "linux": {
1254 | "number": 154,
1255 | "name": "modify_ldt",
1256 | "desc": "get or set a per-process LDT entry"
1257 | }
1258 | },
1259 | "gettid": {
1260 | "darwin": {
1261 | "name": "gettid",
1262 | "number": 286
1263 | },
1264 | "linux": {
1265 | "number": 186,
1266 | "name": "gettid",
1267 | "desc": "get thread identification"
1268 | }
1269 | },
1270 | "sched_get_priority_min": {
1271 | "linux": {
1272 | "number": 147,
1273 | "name": "sched_get_priority_min",
1274 | "desc": "get static priority"
1275 | }
1276 | },
1277 | "fchown": {
1278 | "darwin": {
1279 | "number": 123,
1280 | "name": "fchown",
1281 | "desc": "change owner and group of a file"
1282 | },
1283 | "linux": {
1284 | "number": 93,
1285 | "name": "fchown",
1286 | "desc": "change ownership of a file"
1287 | }
1288 | },
1289 | "openbyid_np": {
1290 | "darwin": {
1291 | "name": "openbyid_np",
1292 | "number": 479
1293 | }
1294 | },
1295 | "__mac_set_link": {
1296 | "darwin": {
1297 | "name": "__mac_set_link",
1298 | "number": 385
1299 | }
1300 | },
1301 | "__mac_get_pid": {
1302 | "darwin": {
1303 | "name": "__mac_get_pid",
1304 | "number": 390
1305 | }
1306 | },
1307 | "membarrier": {
1308 | "linux": {
1309 | "number": 324,
1310 | "name": "membarrier",
1311 | "desc": "issue memory barriers on a set of threads"
1312 | }
1313 | },
1314 | "setfsgid": {
1315 | "linux": {
1316 | "number": 123,
1317 | "name": "setfsgid",
1318 | "desc": "set group identity used for filesystem checks"
1319 | }
1320 | },
1321 | "setreuid": {
1322 | "darwin": {
1323 | "number": 126,
1324 | "name": "setreuid",
1325 | "desc": "set real and effective user IDs"
1326 | },
1327 | "linux": {
1328 | "number": 113,
1329 | "name": "setreuid",
1330 | "desc": "set real and/or effective user or group ID"
1331 | }
1332 | },
1333 | "change_fdguard_np": {
1334 | "darwin": {
1335 | "name": "change_fdguard_np",
1336 | "number": 444
1337 | }
1338 | },
1339 | "semtimedop": {
1340 | "linux": {
1341 | "number": 220,
1342 | "name": "semtimedop",
1343 | "desc": "System V semaphore operations"
1344 | }
1345 | },
1346 | "eventfd2": {
1347 | "linux": {
1348 | "number": 290,
1349 | "name": "eventfd2",
1350 | "desc": "create a file descriptor for event notification"
1351 | }
1352 | },
1353 | "getpgid": {
1354 | "darwin": {
1355 | "number": 151,
1356 | "name": "getpgid",
1357 | "desc": "get process group"
1358 | },
1359 | "linux": {
1360 | "number": 121,
1361 | "name": "getpgid",
1362 | "desc": "set/get process group"
1363 | }
1364 | },
1365 | "coalition_info": {
1366 | "darwin": {
1367 | "name": "coalition_info",
1368 | "number": 459
1369 | }
1370 | },
1371 | "sendto": {
1372 | "darwin": {
1373 | "number": 133,
1374 | "name": "sendto",
1375 | "desc": "send a message from a socket"
1376 | },
1377 | "linux": {
1378 | "number": 44,
1379 | "name": "sendto",
1380 | "desc": "send a message on a socket"
1381 | }
1382 | },
1383 | "wait4_nocancel": {
1384 | "darwin": {
1385 | "name": "wait4_nocancel",
1386 | "number": 400
1387 | }
1388 | },
1389 | "kevent": {
1390 | "darwin": {
1391 | "number": 363,
1392 | "name": "kevent",
1393 | "desc": "kernel event notification mechanism"
1394 | }
1395 | },
1396 | "lgetxattr": {
1397 | "linux": {
1398 | "number": 192,
1399 | "name": "lgetxattr",
1400 | "desc": "retrieve an extended attribute value"
1401 | }
1402 | },
1403 | "clock_gettime": {
1404 | "linux": {
1405 | "number": 228,
1406 | "name": "clock_gettime",
1407 | "desc": "clock and time functions"
1408 | }
1409 | },
1410 | "getfsstat": {
1411 | "darwin": {
1412 | "number": 18,
1413 | "name": "getfsstat",
1414 | "desc": "get list of all mounted file systems"
1415 | }
1416 | },
1417 | "mkfifo": {
1418 | "darwin": {
1419 | "number": 132,
1420 | "name": "mkfifo",
1421 | "desc": "make a fifo file"
1422 | }
1423 | },
1424 | "vfs_purge": {
1425 | "darwin": {
1426 | "name": "vfs_purge",
1427 | "number": 455
1428 | }
1429 | },
1430 | "semctl": {
1431 | "darwin": {
1432 | "number": 254,
1433 | "name": "semctl",
1434 | "desc": "control operations on a semaphore set"
1435 | },
1436 | "linux": {
1437 | "number": 66,
1438 | "name": "semctl",
1439 | "desc": "System V semaphore control operations"
1440 | }
1441 | },
1442 | "connect": {
1443 | "darwin": {
1444 | "number": 98,
1445 | "name": "connect",
1446 | "desc": "initiate a connection on a socket"
1447 | },
1448 | "linux": {
1449 | "number": 42,
1450 | "name": "connect",
1451 | "desc": "initiate a connection on a socket"
1452 | }
1453 | },
1454 | "accept_nocancel": {
1455 | "darwin": {
1456 | "name": "accept_nocancel",
1457 | "number": 404
1458 | }
1459 | },
1460 | "flock": {
1461 | "darwin": {
1462 | "number": 131,
1463 | "name": "flock",
1464 | "desc": "apply or remove an advisory lock on an open file"
1465 | },
1466 | "linux": {
1467 | "number": 73,
1468 | "name": "flock",
1469 | "desc": "apply or remove an advisory lock on an open file"
1470 | }
1471 | },
1472 | "aio_error": {
1473 | "darwin": {
1474 | "number": 317,
1475 | "name": "aio_error",
1476 | "desc": "retrieve error status of asynchronous I/O operation (REALTIME)"
1477 | }
1478 | },
1479 | "shmget": {
1480 | "darwin": {
1481 | "number": 265,
1482 | "name": "shmget",
1483 | "desc": "get shared memory area identifier"
1484 | },
1485 | "linux": {
1486 | "number": 29,
1487 | "name": "shmget",
1488 | "desc": "allocates a System V shared memory segment"
1489 | }
1490 | },
1491 | "add_key": {
1492 | "linux": {
1493 | "number": 248,
1494 | "name": "add_key",
1495 | "desc": "add a key to the kernel's key management facility"
1496 | }
1497 | },
1498 | "__mac_get_fd": {
1499 | "darwin": {
1500 | "name": "__mac_get_fd",
1501 | "number": 388
1502 | }
1503 | },
1504 | "chflags": {
1505 | "darwin": {
1506 | "number": 34,
1507 | "name": "chflags",
1508 | "desc": "set file flags"
1509 | }
1510 | },
1511 | "sysfs": {
1512 | "linux": {
1513 | "number": 139,
1514 | "name": "sysfs",
1515 | "desc": "get filesystem type information"
1516 | }
1517 | },
1518 | "reboot": {
1519 | "darwin": {
1520 | "number": 55,
1521 | "name": "reboot",
1522 | "desc": "reboot system or halt processor"
1523 | },
1524 | "linux": {
1525 | "number": 169,
1526 | "name": "reboot",
1527 | "desc": "reboot or enable/disable Ctrl-Alt-Del"
1528 | }
1529 | },
1530 | "__mac_get_file": {
1531 | "darwin": {
1532 | "name": "__mac_get_file",
1533 | "number": 382
1534 | }
1535 | },
1536 | "setsid": {
1537 | "darwin": {
1538 | "number": 147,
1539 | "name": "setsid",
1540 | "desc": "create session and set process group ID"
1541 | },
1542 | "linux": {
1543 | "number": 112,
1544 | "name": "setsid",
1545 | "desc": "creates a session and sets the process group ID"
1546 | }
1547 | },
1548 | "kexec_load": {
1549 | "linux": {
1550 | "number": 528,
1551 | "name": "kexec_load",
1552 | "desc": "load a new kernel for later execution"
1553 | }
1554 | },
1555 | "set_tid_address": {
1556 | "linux": {
1557 | "number": 218,
1558 | "name": "set_tid_address",
1559 | "desc": "set pointer to thread ID"
1560 | }
1561 | },
1562 | "_sysctl": {
1563 | "linux": {
1564 | "number": 156,
1565 | "name": "_sysctl",
1566 | "desc": "read/write system parameters"
1567 | }
1568 | },
1569 | "proc_uuid_policy": {
1570 | "darwin": {
1571 | "name": "proc_uuid_policy",
1572 | "number": 452
1573 | }
1574 | },
1575 | "__pthread_markcancel": {
1576 | "darwin": {
1577 | "name": "__pthread_markcancel",
1578 | "number": 332
1579 | }
1580 | },
1581 | "keyctl": {
1582 | "linux": {
1583 | "number": 250,
1584 | "name": "keyctl",
1585 | "desc": "manipulate the kernel's key management facility"
1586 | }
1587 | },
1588 | "getcwd": {
1589 | "linux": {
1590 | "number": 79,
1591 | "name": "getcwd",
1592 | "desc": "get current working directory"
1593 | }
1594 | },
1595 | "modwatch": {
1596 | "darwin": {
1597 | "name": "modwatch",
1598 | "number": 233
1599 | }
1600 | },
1601 | "getpeername": {
1602 | "darwin": {
1603 | "number": 31,
1604 | "name": "getpeername",
1605 | "desc": "get address of connected peer"
1606 | },
1607 | "linux": {
1608 | "number": 52,
1609 | "name": "getpeername",
1610 | "desc": "get name of connected peer socket"
1611 | }
1612 | },
1613 | "sigreturn": {
1614 | "darwin": {
1615 | "name": "sigreturn",
1616 | "number": 184
1617 | }
1618 | },
1619 | "mknodat": {
1620 | "linux": {
1621 | "number": 259,
1622 | "name": "mknodat",
1623 | "desc": "create a special or ordinary file"
1624 | }
1625 | },
1626 | "kexec_file_load": {
1627 | "linux": {
1628 | "number": 320,
1629 | "name": "kexec_file_load",
1630 | "desc": "load a new kernel for later execution"
1631 | }
1632 | },
1633 | "times": {
1634 | "linux": {
1635 | "number": 100,
1636 | "name": "times",
1637 | "desc": "get process times"
1638 | }
1639 | },
1640 | "pwrite64": {
1641 | "linux": {
1642 | "number": 18,
1643 | "name": "pwrite64",
1644 | "desc": "read from or write to a file descriptor at a given"
1645 | }
1646 | },
1647 | "copyfile": {
1648 | "darwin": {
1649 | "number": 227,
1650 | "name": "copyfile",
1651 | "desc": "copy a file"
1652 | }
1653 | },
1654 | "setsgroups": {
1655 | "darwin": {
1656 | "name": "setsgroups",
1657 | "number": 287
1658 | }
1659 | },
1660 | "psynch_cvwait": {
1661 | "darwin": {
1662 | "name": "psynch_cvwait",
1663 | "number": 305
1664 | }
1665 | },
1666 | "rt_tgsigqueueinfo": {
1667 | "linux": {
1668 | "number": 536,
1669 | "name": "rt_tgsigqueueinfo",
1670 | "desc": "queue a signal and data"
1671 | }
1672 | },
1673 | "rt_sigaction": {
1674 | "linux": {
1675 | "number": 512,
1676 | "name": "rt_sigaction",
1677 | "desc": "examine and change a signal action"
1678 | }
1679 | },
1680 | "sem_post": {
1681 | "darwin": {
1682 | "number": 273,
1683 | "name": "sem_post",
1684 | "desc": "unlock a semaphore"
1685 | }
1686 | },
1687 | "proc_info": {
1688 | "darwin": {
1689 | "name": "proc_info",
1690 | "number": 336
1691 | }
1692 | },
1693 | "mq_getsetattr": {
1694 | "linux": {
1695 | "number": 245,
1696 | "name": "mq_getsetattr",
1697 | "desc": "get/set message queue attributes"
1698 | }
1699 | },
1700 | "request_key": {
1701 | "linux": {
1702 | "number": 249,
1703 | "name": "request_key",
1704 | "desc": "request a key from the kernel's key management facility"
1705 | }
1706 | },
1707 | "fsetxattr": {
1708 | "darwin": {
1709 | "number": 237,
1710 | "name": "fsetxattr",
1711 | "desc": "set an extended attribute value"
1712 | },
1713 | "linux": {
1714 | "number": 190,
1715 | "name": "fsetxattr",
1716 | "desc": "set an extended attribute value"
1717 | }
1718 | },
1719 | "acct": {
1720 | "darwin": {
1721 | "number": 51,
1722 | "name": "acct",
1723 | "desc": "enable or disable process accounting"
1724 | },
1725 | "linux": {
1726 | "number": 163,
1727 | "name": "acct",
1728 | "desc": "switch process accounting on or off"
1729 | }
1730 | },
1731 | "open": {
1732 | "darwin": {
1733 | "number": 5,
1734 | "name": "open",
1735 | "desc": "open or create a file for reading or writing"
1736 | },
1737 | "linux": {
1738 | "number": 2,
1739 | "name": "open",
1740 | "desc": "open and possibly create a file"
1741 | }
1742 | },
1743 | "sendmsg_nocancel": {
1744 | "darwin": {
1745 | "name": "sendmsg_nocancel",
1746 | "number": 402
1747 | }
1748 | },
1749 | "psynch_cvsignal": {
1750 | "darwin": {
1751 | "name": "psynch_cvsignal",
1752 | "number": 304
1753 | }
1754 | },
1755 | "clock_nanosleep": {
1756 | "linux": {
1757 | "number": 230,
1758 | "name": "clock_nanosleep",
1759 | "desc": "high-resolution sleep with specifiable clock"
1760 | }
1761 | },
1762 | "exit_group": {
1763 | "linux": {
1764 | "number": 231,
1765 | "name": "exit_group",
1766 | "desc": "exit all threads in a process"
1767 | }
1768 | },
1769 | "listxattr": {
1770 | "darwin": {
1771 | "number": 240,
1772 | "name": "listxattr",
1773 | "desc": "list extended attribute names"
1774 | },
1775 | "linux": {
1776 | "number": 194,
1777 | "name": "listxattr",
1778 | "desc": "list extended attribute names"
1779 | }
1780 | },
1781 | "mkdir": {
1782 | "darwin": {
1783 | "number": 136,
1784 | "name": "mkdir",
1785 | "desc": "make a directory file"
1786 | },
1787 | "linux": {
1788 | "number": 83,
1789 | "name": "mkdir",
1790 | "desc": "create a directory"
1791 | }
1792 | },
1793 | "sigpending": {
1794 | "darwin": {
1795 | "number": 52,
1796 | "name": "sigpending",
1797 | "desc": "get pending signals"
1798 | }
1799 | },
1800 | "faccessat": {
1801 | "darwin": {
1802 | "name": "faccessat",
1803 | "number": 466
1804 | },
1805 | "linux": {
1806 | "number": 269,
1807 | "name": "faccessat",
1808 | "desc": "check user's permissions for a file"
1809 | }
1810 | },
1811 | "unlinkat": {
1812 | "darwin": {
1813 | "name": "unlinkat",
1814 | "number": 472
1815 | },
1816 | "linux": {
1817 | "number": 263,
1818 | "name": "unlinkat",
1819 | "desc": "delete a name and possibly the file it refers to"
1820 | }
1821 | },
1822 | "userfaultfd": {
1823 | "linux": {
1824 | "name": "userfaultfd",
1825 | "number": 323
1826 | }
1827 | },
1828 | "psynch_rw_upgrade": {
1829 | "darwin": {
1830 | "name": "psynch_rw_upgrade",
1831 | "number": 300
1832 | }
1833 | },
1834 | "settid": {
1835 | "darwin": {
1836 | "name": "settid",
1837 | "number": 285
1838 | }
1839 | },
1840 | "listen": {
1841 | "darwin": {
1842 | "number": 106,
1843 | "name": "listen",
1844 | "desc": "listen for connections on a socket"
1845 | },
1846 | "linux": {
1847 | "number": 50,
1848 | "name": "listen",
1849 | "desc": "listen for connections on a socket"
1850 | }
1851 | },
1852 | "readv_nocancel": {
1853 | "darwin": {
1854 | "name": "readv_nocancel",
1855 | "number": 411
1856 | }
1857 | },
1858 | "move_pages": {
1859 | "linux": {
1860 | "number": 533,
1861 | "name": "move_pages",
1862 | "desc": "move individual pages of a process to another node"
1863 | }
1864 | },
1865 | "__mac_get_proc": {
1866 | "darwin": {
1867 | "name": "__mac_get_proc",
1868 | "number": 386
1869 | }
1870 | },
1871 | "write_nocancel": {
1872 | "darwin": {
1873 | "name": "write_nocancel",
1874 | "number": 397
1875 | }
1876 | },
1877 | "tee": {
1878 | "linux": {
1879 | "number": 276,
1880 | "name": "tee",
1881 | "desc": "duplicating pipe content"
1882 | }
1883 | },
1884 | "fgetxattr": {
1885 | "darwin": {
1886 | "number": 235,
1887 | "name": "fgetxattr",
1888 | "desc": "get an extended attribute value"
1889 | },
1890 | "linux": {
1891 | "number": 193,
1892 | "name": "fgetxattr",
1893 | "desc": "retrieve an extended attribute value"
1894 | }
1895 | },
1896 | "pwrite": {
1897 | "darwin": {
1898 | "number": 154,
1899 | "name": "pwrite",
1900 | "desc": "write output"
1901 | }
1902 | },
1903 | "mlock": {
1904 | "darwin": {
1905 | "number": 203,
1906 | "name": "mlock",
1907 | "desc": "lock (unlock) physical pages in memory"
1908 | },
1909 | "linux": {
1910 | "number": 149,
1911 | "name": "mlock",
1912 | "desc": "lock and unlock memory"
1913 | }
1914 | },
1915 | "recvfrom_nocancel": {
1916 | "darwin": {
1917 | "name": "recvfrom_nocancel",
1918 | "number": 403
1919 | }
1920 | },
1921 | "swapon": {
1922 | "darwin": {
1923 | "name": "swapon",
1924 | "number": 85
1925 | },
1926 | "linux": {
1927 | "number": 167,
1928 | "name": "swapon",
1929 | "desc": "start/stop swapping to file/device"
1930 | }
1931 | },
1932 | "statfs": {
1933 | "darwin": {
1934 | "number": 157,
1935 | "name": "statfs",
1936 | "desc": "get file system statistics"
1937 | },
1938 | "linux": {
1939 | "number": 137,
1940 | "name": "statfs",
1941 | "desc": "get filesystem statistics"
1942 | }
1943 | },
1944 | "psynch_rw_wrlock": {
1945 | "darwin": {
1946 | "name": "psynch_rw_wrlock",
1947 | "number": 307
1948 | }
1949 | },
1950 | "rt_sigqueueinfo": {
1951 | "linux": {
1952 | "number": 524,
1953 | "name": "rt_sigqueueinfo",
1954 | "desc": "queue a signal and data"
1955 | }
1956 | },
1957 | "process_vm_writev": {
1958 | "linux": {
1959 | "number": 540,
1960 | "name": "process_vm_writev",
1961 | "desc": "transfer data between process"
1962 | }
1963 | },
1964 | "setitimer": {
1965 | "darwin": {
1966 | "number": 83,
1967 | "name": "setitimer",
1968 | "desc": "get/set value of interval timer"
1969 | },
1970 | "linux": {
1971 | "number": 38,
1972 | "name": "setitimer",
1973 | "desc": "get or set value of an interval timer"
1974 | }
1975 | },
1976 | "audit_session_join": {
1977 | "darwin": {
1978 | "name": "audit_session_join",
1979 | "number": 429
1980 | }
1981 | },
1982 | "getdents64": {
1983 | "linux": {
1984 | "number": 217,
1985 | "name": "getdents64",
1986 | "desc": "get directory entries"
1987 | }
1988 | },
1989 | "mremap": {
1990 | "linux": {
1991 | "number": 25,
1992 | "name": "mremap",
1993 | "desc": "remap a virtual memory address"
1994 | }
1995 | },
1996 | "getattrlistbulk": {
1997 | "darwin": {
1998 | "name": "getattrlistbulk",
1999 | "number": 461
2000 | }
2001 | },
2002 | "fanotify_mark": {
2003 | "linux": {
2004 | "number": 301,
2005 | "name": "fanotify_mark",
2006 | "desc": "add, remove, or modify an fanotify mark on a filesys\u2010"
2007 | }
2008 | },
2009 | "rename_ext": {
2010 | "darwin": {
2011 | "name": "rename_ext",
2012 | "number": 488
2013 | }
2014 | },
2015 | "pid_suspend": {
2016 | "darwin": {
2017 | "name": "pid_suspend",
2018 | "number": 433
2019 | }
2020 | },
2021 | "rt_sigreturn": {
2022 | "linux": {
2023 | "number": 513,
2024 | "name": "rt_sigreturn",
2025 | "desc": "return from signal handler and cleanup"
2026 | }
2027 | },
2028 | "getrlimit": {
2029 | "darwin": {
2030 | "number": 194,
2031 | "name": "getrlimit",
2032 | "desc": "control maximum system resource consumption"
2033 | },
2034 | "linux": {
2035 | "number": 97,
2036 | "name": "getrlimit",
2037 | "desc": "get/set resource limits"
2038 | }
2039 | },
2040 | "setattrlist": {
2041 | "darwin": {
2042 | "number": 221,
2043 | "name": "setattrlist",
2044 | "desc": "set file system attributes"
2045 | }
2046 | },
2047 | "timer_getoverrun": {
2048 | "linux": {
2049 | "number": 225,
2050 | "name": "timer_getoverrun",
2051 | "desc": "get overrun count for a POSIX per-process timer"
2052 | }
2053 | },
2054 | "sem_wait_nocancel": {
2055 | "darwin": {
2056 | "name": "sem_wait_nocancel",
2057 | "number": 420
2058 | }
2059 | },
2060 | "psynch_cvbroad": {
2061 | "darwin": {
2062 | "name": "psynch_cvbroad",
2063 | "number": 303
2064 | }
2065 | },
2066 | "waitid": {
2067 | "darwin": {
2068 | "name": "waitid",
2069 | "number": 173
2070 | },
2071 | "linux": {
2072 | "number": 529,
2073 | "name": "waitid",
2074 | "desc": "wait for process to change state"
2075 | }
2076 | },
2077 | "fsetattrlist": {
2078 | "darwin": {
2079 | "number": 229,
2080 | "name": "fsetattrlist",
2081 | "desc": "set file system attributes"
2082 | }
2083 | },
2084 | "mlockall": {
2085 | "darwin": {
2086 | "name": "mlockall",
2087 | "number": 324
2088 | },
2089 | "linux": {
2090 | "number": 151,
2091 | "name": "mlockall",
2092 | "desc": "lock and unlock memory"
2093 | }
2094 | },
2095 | "psynch_rw_rdlock": {
2096 | "darwin": {
2097 | "name": "psynch_rw_rdlock",
2098 | "number": 306
2099 | }
2100 | },
2101 | "alarm": {
2102 | "linux": {
2103 | "number": 37,
2104 | "name": "alarm",
2105 | "desc": "set an alarm clock for delivery of a signal"
2106 | }
2107 | },
2108 | "futex": {
2109 | "linux": {
2110 | "number": 202,
2111 | "name": "futex",
2112 | "desc": "fast user-space locking"
2113 | }
2114 | },
2115 | "pipe": {
2116 | "darwin": {
2117 | "number": 42,
2118 | "name": "pipe",
2119 | "desc": "create descriptor pair for interprocess communication"
2120 | },
2121 | "linux": {
2122 | "number": 22,
2123 | "name": "pipe",
2124 | "desc": "create pipe"
2125 | }
2126 | },
2127 | "utimes": {
2128 | "darwin": {
2129 | "number": 138,
2130 | "name": "utimes",
2131 | "desc": "set file access and modification times"
2132 | },
2133 | "linux": {
2134 | "number": 235,
2135 | "name": "utimes",
2136 | "desc": "change file last access and modification times"
2137 | }
2138 | },
2139 | "getwgroups": {
2140 | "darwin": {
2141 | "name": "getwgroups",
2142 | "number": 290
2143 | }
2144 | },
2145 | "sem_wait": {
2146 | "darwin": {
2147 | "number": 271,
2148 | "name": "sem_wait",
2149 | "desc": "lock a semaphore"
2150 | }
2151 | },
2152 | "psynch_mutexdrop": {
2153 | "darwin": {
2154 | "name": "psynch_mutexdrop",
2155 | "number": 302
2156 | }
2157 | },
2158 | "iopl": {
2159 | "linux": {
2160 | "number": 172,
2161 | "name": "iopl",
2162 | "desc": "change I/O privilege level"
2163 | }
2164 | },
2165 | "mq_timedreceive": {
2166 | "linux": {
2167 | "number": 243,
2168 | "name": "mq_timedreceive",
2169 | "desc": "receive a message from a message queue"
2170 | }
2171 | },
2172 | "fsctl": {
2173 | "darwin": {
2174 | "name": "fsctl",
2175 | "number": 242
2176 | }
2177 | },
2178 | "msgrcv_nocancel": {
2179 | "darwin": {
2180 | "name": "msgrcv_nocancel",
2181 | "number": 419
2182 | }
2183 | },
2184 | "fcntl_nocancel": {
2185 | "darwin": {
2186 | "name": "fcntl_nocancel",
2187 | "number": 406
2188 | }
2189 | },
2190 | "bsdthread_register": {
2191 | "darwin": {
2192 | "name": "bsdthread_register",
2193 | "number": 366
2194 | }
2195 | },
2196 | "access": {
2197 | "darwin": {
2198 | "number": 33,
2199 | "name": "access",
2200 | "desc": "check access permissions of a file or pathname"
2201 | },
2202 | "linux": {
2203 | "number": 21,
2204 | "name": "access",
2205 | "desc": "check user's permissions for a file"
2206 | }
2207 | },
2208 | "pause": {
2209 | "linux": {
2210 | "number": 34,
2211 | "name": "pause",
2212 | "desc": "wait for signal"
2213 | }
2214 | },
2215 | "epoll_create": {
2216 | "linux": {
2217 | "number": 213,
2218 | "name": "epoll_create",
2219 | "desc": "open an epoll file descriptor"
2220 | }
2221 | },
2222 | "getdents": {
2223 | "linux": {
2224 | "number": 78,
2225 | "name": "getdents",
2226 | "desc": "get directory entries"
2227 | }
2228 | },
2229 | "system_override": {
2230 | "darwin": {
2231 | "name": "system_override",
2232 | "number": 454
2233 | }
2234 | },
2235 | "getsgroups": {
2236 | "darwin": {
2237 | "name": "getsgroups",
2238 | "number": 288
2239 | }
2240 | },
2241 | "arch_prctl": {
2242 | "linux": {
2243 | "number": 158,
2244 | "name": "arch_prctl",
2245 | "desc": "set architecture-specific thread state"
2246 | }
2247 | },
2248 | "writev": {
2249 | "darwin": {
2250 | "number": 121,
2251 | "name": "writev",
2252 | "desc": "write output"
2253 | },
2254 | "linux": {
2255 | "number": 516,
2256 | "name": "writev",
2257 | "desc": "read or write data into multiple"
2258 | }
2259 | },
2260 | "fchmod": {
2261 | "darwin": {
2262 | "number": 124,
2263 | "name": "fchmod",
2264 | "desc": "change mode of file"
2265 | },
2266 | "linux": {
2267 | "number": 91,
2268 | "name": "fchmod",
2269 | "desc": "change permissions of a file"
2270 | }
2271 | },
2272 | "peeloff": {
2273 | "darwin": {
2274 | "name": "peeloff",
2275 | "number": 449
2276 | }
2277 | },
2278 | "bsdthread_ctl": {
2279 | "darwin": {
2280 | "name": "bsdthread_ctl",
2281 | "number": 478
2282 | }
2283 | },
2284 | "__mac_mount": {
2285 | "darwin": {
2286 | "name": "__mac_mount",
2287 | "number": 424
2288 | }
2289 | },
2290 | "epoll_wait": {
2291 | "linux": {
2292 | "number": 232,
2293 | "name": "epoll_wait",
2294 | "desc": "wait for an I/O event on an epoll file"
2295 | }
2296 | },
2297 | "fstat": {
2298 | "darwin": {
2299 | "number": 189,
2300 | "name": "fstat",
2301 | "desc": "get file status"
2302 | },
2303 | "linux": {
2304 | "number": 5,
2305 | "name": "fstat",
2306 | "desc": "get file status"
2307 | }
2308 | },
2309 | "capset": {
2310 | "linux": {
2311 | "number": 126,
2312 | "name": "capset",
2313 | "desc": "set/get capabilities of thread(s)"
2314 | }
2315 | },
2316 | "personality": {
2317 | "linux": {
2318 | "number": 135,
2319 | "name": "personality",
2320 | "desc": "set the process execution domain"
2321 | }
2322 | },
2323 | "dup3": {
2324 | "linux": {
2325 | "number": 292,
2326 | "name": "dup3",
2327 | "desc": "duplicate a file descriptor"
2328 | }
2329 | },
2330 | "dup2": {
2331 | "darwin": {
2332 | "number": 90,
2333 | "name": "dup2",
2334 | "desc": "duplicate an existing file descriptor"
2335 | },
2336 | "linux": {
2337 | "number": 33,
2338 | "name": "dup2",
2339 | "desc": "duplicate a file descriptor"
2340 | }
2341 | },
2342 | "psynch_rw_unlock": {
2343 | "darwin": {
2344 | "name": "psynch_rw_unlock",
2345 | "number": 308
2346 | }
2347 | },
2348 | "getpgrp": {
2349 | "darwin": {
2350 | "number": 81,
2351 | "name": "getpgrp",
2352 | "desc": "get process group"
2353 | },
2354 | "linux": {
2355 | "number": 111,
2356 | "name": "getpgrp",
2357 | "desc": "set/get process group"
2358 | }
2359 | },
2360 | "semop": {
2361 | "darwin": {
2362 | "number": 256,
2363 | "name": "semop",
2364 | "desc": "atomic array of operations on a semaphore set"
2365 | },
2366 | "linux": {
2367 | "number": 65,
2368 | "name": "semop",
2369 | "desc": "System V semaphore operations"
2370 | }
2371 | },
2372 | "readlinkat": {
2373 | "darwin": {
2374 | "name": "readlinkat",
2375 | "number": 473
2376 | },
2377 | "linux": {
2378 | "number": 267,
2379 | "name": "readlinkat",
2380 | "desc": "read value of a symbolic link"
2381 | }
2382 | },
2383 | "__mac_execve": {
2384 | "darwin": {
2385 | "name": "__mac_execve",
2386 | "number": 380
2387 | }
2388 | },
2389 | "poll_nocancel": {
2390 | "darwin": {
2391 | "name": "poll_nocancel",
2392 | "number": 417
2393 | }
2394 | },
2395 | "__pthread_fchdir": {
2396 | "darwin": {
2397 | "name": "__pthread_fchdir",
2398 | "number": 349
2399 | }
2400 | },
2401 | "renameat2": {
2402 | "linux": {
2403 | "number": 316,
2404 | "name": "renameat2",
2405 | "desc": "change the name or location of a file"
2406 | }
2407 | },
2408 | "__mac_get_lctx": {
2409 | "darwin": {
2410 | "name": "__mac_get_lctx",
2411 | "number": 392
2412 | }
2413 | },
2414 | "fstat64": {
2415 | "darwin": {
2416 | "number": 339,
2417 | "name": "fstat64",
2418 | "desc": "get file status"
2419 | }
2420 | },
2421 | "kill": {
2422 | "darwin": {
2423 | "number": 37,
2424 | "name": "kill",
2425 | "desc": "send signal to a process"
2426 | },
2427 | "linux": {
2428 | "number": 62,
2429 | "name": "kill",
2430 | "desc": "send signal to a process"
2431 | }
2432 | },
2433 | "vhangup": {
2434 | "linux": {
2435 | "number": 153,
2436 | "name": "vhangup",
2437 | "desc": "virtually hangup the current terminal"
2438 | }
2439 | },
2440 | "__mac_set_fd": {
2441 | "darwin": {
2442 | "name": "__mac_set_fd",
2443 | "number": 389
2444 | }
2445 | },
2446 | "mkdirat": {
2447 | "darwin": {
2448 | "name": "mkdirat",
2449 | "number": 475
2450 | },
2451 | "linux": {
2452 | "number": 258,
2453 | "name": "mkdirat",
2454 | "desc": "create a directory"
2455 | }
2456 | },
2457 | "guarded_open_np": {
2458 | "darwin": {
2459 | "name": "guarded_open_np",
2460 | "number": 441
2461 | }
2462 | },
2463 | "futimes": {
2464 | "darwin": {
2465 | "number": 139,
2466 | "name": "futimes",
2467 | "desc": "set file access and modification times"
2468 | }
2469 | },
2470 | "__pthread_sigmask": {
2471 | "darwin": {
2472 | "name": "__pthread_sigmask",
2473 | "number": 329
2474 | }
2475 | },
2476 | "timerfd_gettime": {
2477 | "linux": {
2478 | "number": 287,
2479 | "name": "timerfd_gettime",
2480 | "desc": "timers that notify"
2481 | }
2482 | },
2483 | "adjtimex": {
2484 | "linux": {
2485 | "number": 159,
2486 | "name": "adjtimex",
2487 | "desc": "tune kernel clock"
2488 | }
2489 | },
2490 | "__mac_set_file": {
2491 | "darwin": {
2492 | "name": "__mac_set_file",
2493 | "number": 383
2494 | }
2495 | },
2496 | "fchownat": {
2497 | "darwin": {
2498 | "name": "fchownat",
2499 | "number": 468
2500 | },
2501 | "linux": {
2502 | "number": 260,
2503 | "name": "fchownat",
2504 | "desc": "change ownership of a file"
2505 | }
2506 | },
2507 | "migrate_pages": {
2508 | "linux": {
2509 | "number": 256,
2510 | "name": "migrate_pages",
2511 | "desc": "move all pages in a process to another set of nodes"
2512 | }
2513 | },
2514 | "getsockname": {
2515 | "darwin": {
2516 | "number": 32,
2517 | "name": "getsockname",
2518 | "desc": "get socket name"
2519 | },
2520 | "linux": {
2521 | "number": 51,
2522 | "name": "getsockname",
2523 | "desc": "get socket name"
2524 | }
2525 | },
2526 | "close": {
2527 | "darwin": {
2528 | "number": 6,
2529 | "name": "close",
2530 | "desc": "delete a descriptor"
2531 | },
2532 | "linux": {
2533 | "number": 3,
2534 | "name": "close",
2535 | "desc": "close a file descriptor"
2536 | }
2537 | },
2538 | "lsetxattr": {
2539 | "linux": {
2540 | "number": 189,
2541 | "name": "lsetxattr",
2542 | "desc": "set an extended attribute value"
2543 | }
2544 | },
2545 | "open_extended": {
2546 | "darwin": {
2547 | "name": "open_extended",
2548 | "number": 277
2549 | }
2550 | },
2551 | "lremovexattr": {
2552 | "linux": {
2553 | "number": 198,
2554 | "name": "lremovexattr",
2555 | "desc": "remove an extended"
2556 | }
2557 | },
2558 | "pselect6": {
2559 | "linux": {
2560 | "number": 270,
2561 | "name": "pselect6",
2562 | "desc": "synchronous I/O"
2563 | }
2564 | },
2565 | "msgget": {
2566 | "darwin": {
2567 | "name": "msgget",
2568 | "number": 259
2569 | },
2570 | "linux": {
2571 | "number": 68,
2572 | "name": "msgget",
2573 | "desc": "get a System V message queue identifier"
2574 | }
2575 | },
2576 | "bsdthread_terminate": {
2577 | "darwin": {
2578 | "name": "bsdthread_terminate",
2579 | "number": 361
2580 | }
2581 | },
2582 | "setprivexec": {
2583 | "darwin": {
2584 | "name": "setprivexec",
2585 | "number": 152
2586 | }
2587 | },
2588 | "workq_kernreturn": {
2589 | "darwin": {
2590 | "name": "workq_kernreturn",
2591 | "number": 368
2592 | }
2593 | },
2594 | "sigaltstack": {
2595 | "darwin": {
2596 | "number": 53,
2597 | "name": "sigaltstack",
2598 | "desc": "set and/or get signal stack context"
2599 | },
2600 | "linux": {
2601 | "number": 525,
2602 | "name": "sigaltstack",
2603 | "desc": "set and/or get signal stack context"
2604 | }
2605 | },
2606 | "sched_setattr": {
2607 | "linux": {
2608 | "number": 314,
2609 | "name": "sched_setattr",
2610 | "desc": "set and get scheduling policy and"
2611 | }
2612 | },
2613 | "sem_close": {
2614 | "darwin": {
2615 | "number": 269,
2616 | "name": "sem_close",
2617 | "desc": "close a named semaphore"
2618 | }
2619 | },
2620 | "thread_selfid": {
2621 | "darwin": {
2622 | "name": "thread_selfid",
2623 | "number": 372
2624 | }
2625 | },
2626 | "proc_rlimit_control": {
2627 | "darwin": {
2628 | "name": "proc_rlimit_control",
2629 | "number": 446
2630 | }
2631 | },
2632 | "fcntl": {
2633 | "darwin": {
2634 | "number": 92,
2635 | "name": "fcntl",
2636 | "desc": "file control"
2637 | },
2638 | "linux": {
2639 | "number": 72,
2640 | "name": "fcntl",
2641 | "desc": "manipulate file descriptor"
2642 | }
2643 | },
2644 | "__pthread_chdir": {
2645 | "darwin": {
2646 | "name": "__pthread_chdir",
2647 | "number": 348
2648 | }
2649 | },
2650 | "sync_file_range": {
2651 | "linux": {
2652 | "number": 277,
2653 | "name": "sync_file_range",
2654 | "desc": "sync a file segment with disk"
2655 | }
2656 | },
2657 | "lstat": {
2658 | "darwin": {
2659 | "number": 190,
2660 | "name": "lstat",
2661 | "desc": "get file status"
2662 | },
2663 | "linux": {
2664 | "number": 6,
2665 | "name": "lstat",
2666 | "desc": "get file status"
2667 | }
2668 | },
2669 | "msgsys": {
2670 | "darwin": {
2671 | "name": "msgsys",
2672 | "number": 252
2673 | }
2674 | },
2675 | "init_module": {
2676 | "linux": {
2677 | "number": 175,
2678 | "name": "init_module",
2679 | "desc": "load a kernel module"
2680 | }
2681 | },
2682 | "setresgid": {
2683 | "linux": {
2684 | "number": 119,
2685 | "name": "setresgid",
2686 | "desc": "set real, effective and saved user or group ID"
2687 | }
2688 | },
2689 | "rt_sigsuspend": {
2690 | "linux": {
2691 | "number": 130,
2692 | "name": "rt_sigsuspend",
2693 | "desc": "wait for a signal"
2694 | }
2695 | },
2696 | "semget": {
2697 | "darwin": {
2698 | "number": 255,
2699 | "name": "semget",
2700 | "desc": "obtain a semaphore id"
2701 | },
2702 | "linux": {
2703 | "number": 64,
2704 | "name": "semget",
2705 | "desc": "get a System V semaphore set identifier"
2706 | }
2707 | },
2708 | "seccomp": {
2709 | "linux": {
2710 | "number": 317,
2711 | "name": "seccomp",
2712 | "desc": "operate on Secure Computing state of the process"
2713 | }
2714 | },
2715 | "getdtablesize": {
2716 | "darwin": {
2717 | "number": 89,
2718 | "name": "getdtablesize",
2719 | "desc": "get descriptor table size"
2720 | }
2721 | },
2722 | "sigaction": {
2723 | "darwin": {
2724 | "number": 46,
2725 | "name": "sigaction",
2726 | "desc": "software signal facilities"
2727 | }
2728 | },
2729 | "setsockopt": {
2730 | "darwin": {
2731 | "number": 105,
2732 | "name": "setsockopt",
2733 | "desc": "get and set options on sockets"
2734 | },
2735 | "linux": {
2736 | "number": 541,
2737 | "name": "setsockopt",
2738 | "desc": "get and set options on sockets"
2739 | }
2740 | },
2741 | "lstat64": {
2742 | "darwin": {
2743 | "number": 340,
2744 | "name": "lstat64",
2745 | "desc": "get file status"
2746 | }
2747 | },
2748 | "undelete": {
2749 | "darwin": {
2750 | "number": 205,
2751 | "name": "undelete",
2752 | "desc": "attempt to recover a deleted file"
2753 | }
2754 | },
2755 | "initgroups": {
2756 | "darwin": {
2757 | "number": 243,
2758 | "name": "initgroups",
2759 | "desc": "initialize group access list"
2760 | }
2761 | },
2762 | "mremap_encrypted": {
2763 | "darwin": {
2764 | "name": "mremap_encrypted",
2765 | "number": 489
2766 | }
2767 | },
2768 | "prlimit64": {
2769 | "linux": {
2770 | "number": 302,
2771 | "name": "prlimit64",
2772 | "desc": "get/set resource limits"
2773 | }
2774 | },
2775 | "set_mempolicy": {
2776 | "linux": {
2777 | "number": 238,
2778 | "name": "set_mempolicy",
2779 | "desc": "set default NUMA memory policy for a thread and its"
2780 | }
2781 | },
2782 | "fanotify_init": {
2783 | "linux": {
2784 | "number": 300,
2785 | "name": "fanotify_init",
2786 | "desc": "create and initialize fanotify group"
2787 | }
2788 | },
2789 | "delete": {
2790 | "darwin": {
2791 | "name": "delete",
2792 | "number": 226
2793 | }
2794 | },
2795 | "connect_nocancel": {
2796 | "darwin": {
2797 | "name": "connect_nocancel",
2798 | "number": 409
2799 | }
2800 | },
2801 | "splice": {
2802 | "linux": {
2803 | "number": 275,
2804 | "name": "splice",
2805 | "desc": "splice data to/from a pipe"
2806 | }
2807 | },
2808 | "read_nocancel": {
2809 | "darwin": {
2810 | "name": "read_nocancel",
2811 | "number": 396
2812 | }
2813 | },
2814 | "chmod": {
2815 | "darwin": {
2816 | "number": 15,
2817 | "name": "chmod",
2818 | "desc": "change mode of file"
2819 | },
2820 | "linux": {
2821 | "number": 90,
2822 | "name": "chmod",
2823 | "desc": "change permissions of a file"
2824 | }
2825 | },
2826 | "rt_sigpending": {
2827 | "linux": {
2828 | "number": 522,
2829 | "name": "rt_sigpending",
2830 | "desc": "examine pending signals"
2831 | }
2832 | },
2833 | "setxattr": {
2834 | "darwin": {
2835 | "number": 236,
2836 | "name": "setxattr",
2837 | "desc": "set an extended attribute value"
2838 | },
2839 | "linux": {
2840 | "number": 188,
2841 | "name": "setxattr",
2842 | "desc": "set an extended attribute value"
2843 | }
2844 | },
2845 | "symlinkat": {
2846 | "darwin": {
2847 | "name": "symlinkat",
2848 | "number": 474
2849 | },
2850 | "linux": {
2851 | "number": 266,
2852 | "name": "symlinkat",
2853 | "desc": "make a new name for a file"
2854 | }
2855 | },
2856 | "shutdown": {
2857 | "darwin": {
2858 | "number": 134,
2859 | "name": "shutdown",
2860 | "desc": "shut down part of a full-duplex connection"
2861 | },
2862 | "linux": {
2863 | "number": 48,
2864 | "name": "shutdown",
2865 | "desc": "shut down part of a full-duplex connection"
2866 | }
2867 | },
2868 | "pread": {
2869 | "darwin": {
2870 | "number": 153,
2871 | "name": "pread",
2872 | "desc": "read input"
2873 | }
2874 | },
2875 | "fstat64_extended": {
2876 | "darwin": {
2877 | "name": "fstat64_extended",
2878 | "number": 343
2879 | }
2880 | },
2881 | "poll": {
2882 | "darwin": {
2883 | "number": 230,
2884 | "name": "poll",
2885 | "desc": "synchronous I/O multiplexing"
2886 | },
2887 | "linux": {
2888 | "number": 7,
2889 | "name": "poll",
2890 | "desc": "wait for some event on a file descriptor"
2891 | }
2892 | },
2893 | "setauid": {
2894 | "darwin": {
2895 | "number": 354,
2896 | "name": "setauid",
2897 | "desc": "set audit indentifier"
2898 | }
2899 | },
2900 | "sigprocmask": {
2901 | "darwin": {
2902 | "number": 48,
2903 | "name": "sigprocmask",
2904 | "desc": "manipulate current signal mask"
2905 | }
2906 | },
2907 | "open_nocancel": {
2908 | "darwin": {
2909 | "name": "open_nocancel",
2910 | "number": 398
2911 | }
2912 | },
2913 | "nanosleep": {
2914 | "linux": {
2915 | "number": 35,
2916 | "name": "nanosleep",
2917 | "desc": "high-resolution sleep"
2918 | }
2919 | },
2920 | "shmdt": {
2921 | "darwin": {
2922 | "number": 264,
2923 | "name": "shmdt",
2924 | "desc": "map/unmap shared memory"
2925 | },
2926 | "linux": {
2927 | "number": 67,
2928 | "name": "shmdt",
2929 | "desc": "System V shared memory operations"
2930 | }
2931 | },
2932 | "dup": {
2933 | "darwin": {
2934 | "number": 41,
2935 | "name": "dup",
2936 | "desc": "duplicate an existing file descriptor"
2937 | },
2938 | "linux": {
2939 | "number": 32,
2940 | "name": "dup",
2941 | "desc": "duplicate a file descriptor"
2942 | }
2943 | },
2944 | "chud": {
2945 | "darwin": {
2946 | "name": "chud",
2947 | "number": 185
2948 | }
2949 | },
2950 | "futimesat": {
2951 | "linux": {
2952 | "number": 261,
2953 | "name": "futimesat",
2954 | "desc": "change timestamps of a file relative to a directory file"
2955 | }
2956 | },
2957 | "mq_timedsend": {
2958 | "linux": {
2959 | "number": 242,
2960 | "name": "mq_timedsend",
2961 | "desc": "send a message to a message queue"
2962 | }
2963 | },
2964 | "set_robust_list": {
2965 | "linux": {
2966 | "number": 530,
2967 | "name": "set_robust_list",
2968 | "desc": "get/set list of robust futexes"
2969 | }
2970 | },
2971 | "shared_region_check_np": {
2972 | "darwin": {
2973 | "name": "shared_region_check_np",
2974 | "number": 294
2975 | }
2976 | },
2977 | "adjtime": {
2978 | "darwin": {
2979 | "number": 140,
2980 | "name": "adjtime",
2981 | "desc": "correct the time to allow synchronization of the system clock"
2982 | }
2983 | },
2984 | "aio_return": {
2985 | "darwin": {
2986 | "number": 314,
2987 | "name": "aio_return",
2988 | "desc": "retrieve return status of asynchronous I/O operation (REALTIME)"
2989 | }
2990 | },
2991 | "shmctl": {
2992 | "darwin": {
2993 | "number": 263,
2994 | "name": "shmctl",
2995 | "desc": "shared memory control operations"
2996 | },
2997 | "linux": {
2998 | "number": 31,
2999 | "name": "shmctl",
3000 | "desc": "System V shared memory control"
3001 | }
3002 | },
3003 | "execve": {
3004 | "darwin": {
3005 | "number": 59,
3006 | "name": "execve",
3007 | "desc": "execute a file"
3008 | },
3009 | "linux": {
3010 | "number": 520,
3011 | "name": "execve",
3012 | "desc": "execute program"
3013 | }
3014 | },
3015 | "madvise": {
3016 | "darwin": {
3017 | "number": 75,
3018 | "name": "madvise",
3019 | "desc": "give advice about use of memory"
3020 | },
3021 | "linux": {
3022 | "number": 28,
3023 | "name": "madvise",
3024 | "desc": "give advice about use of memory"
3025 | }
3026 | },
3027 | "mount": {
3028 | "darwin": {
3029 | "number": 167,
3030 | "name": "mount",
3031 | "desc": "mount or dismount a filesystem"
3032 | },
3033 | "linux": {
3034 | "number": 165,
3035 | "name": "mount",
3036 | "desc": "mount filesystem"
3037 | }
3038 | },
3039 | "getrusage": {
3040 | "darwin": {
3041 | "number": 117,
3042 | "name": "getrusage",
3043 | "desc": "get information about resource utilization"
3044 | },
3045 | "linux": {
3046 | "number": 98,
3047 | "name": "getrusage",
3048 | "desc": "get resource usage"
3049 | }
3050 | },
3051 | "fstatat": {
3052 | "darwin": {
3053 | "name": "fstatat",
3054 | "number": 469
3055 | }
3056 | },
3057 | "watchevent": {
3058 | "darwin": {
3059 | "name": "watchevent",
3060 | "number": 231
3061 | }
3062 | },
3063 | "minherit": {
3064 | "darwin": {
3065 | "number": 250,
3066 | "name": "minherit",
3067 | "desc": "control the inheritance of pages"
3068 | }
3069 | },
3070 | "fstat_extended": {
3071 | "darwin": {
3072 | "name": "fstat_extended",
3073 | "number": 281
3074 | }
3075 | },
3076 | "mbind": {
3077 | "linux": {
3078 | "number": 237,
3079 | "name": "mbind",
3080 | "desc": "set memory policy for a memory range"
3081 | }
3082 | },
3083 | "rename": {
3084 | "darwin": {
3085 | "number": 128,
3086 | "name": "rename",
3087 | "desc": "change the name of a file"
3088 | },
3089 | "linux": {
3090 | "number": 82,
3091 | "name": "rename",
3092 | "desc": "change the name or location of a file"
3093 | }
3094 | },
3095 | "identitysvc": {
3096 | "darwin": {
3097 | "name": "identitysvc",
3098 | "number": 293
3099 | }
3100 | },
3101 | "waitid_nocancel": {
3102 | "darwin": {
3103 | "name": "waitid_nocancel",
3104 | "number": 416
3105 | }
3106 | },
3107 | "geteuid": {
3108 | "darwin": {
3109 | "number": 25,
3110 | "name": "geteuid",
3111 | "desc": "get user identification"
3112 | },
3113 | "linux": {
3114 | "number": 107,
3115 | "name": "geteuid",
3116 | "desc": "get user identity"
3117 | }
3118 | },
3119 | "csops_audittoken": {
3120 | "darwin": {
3121 | "name": "csops_audittoken",
3122 | "number": 170
3123 | }
3124 | },
3125 | "openat_nocancel": {
3126 | "darwin": {
3127 | "name": "openat_nocancel",
3128 | "number": 464
3129 | }
3130 | },
3131 | "readv": {
3132 | "darwin": {
3133 | "number": 120,
3134 | "name": "readv",
3135 | "desc": "read input"
3136 | },
3137 | "linux": {
3138 | "number": 515,
3139 | "name": "readv",
3140 | "desc": "read or write data into multiple"
3141 | }
3142 | },
3143 | "prctl": {
3144 | "linux": {
3145 | "number": 157,
3146 | "name": "prctl",
3147 | "desc": "operations on a process"
3148 | }
3149 | },
3150 | "__mac_syscall": {
3151 | "darwin": {
3152 | "name": "__mac_syscall",
3153 | "number": 381
3154 | }
3155 | },
3156 | "unmount": {
3157 | "darwin": {
3158 | "number": 159,
3159 | "name": "unmount",
3160 | "desc": "mount or dismount a filesystem"
3161 | }
3162 | },
3163 | "sigsuspend_nocancel": {
3164 | "darwin": {
3165 | "name": "sigsuspend_nocancel",
3166 | "number": 410
3167 | }
3168 | },
3169 | "sched_getparam": {
3170 | "linux": {
3171 | "number": 143,
3172 | "name": "sched_getparam",
3173 | "desc": "set and get scheduling parameters"
3174 | }
3175 | },
3176 | "iopolicysys": {
3177 | "darwin": {
3178 | "name": "iopolicysys",
3179 | "number": 322
3180 | }
3181 | },
3182 | "__disable_threadsignal": {
3183 | "darwin": {
3184 | "name": "__disable_threadsignal",
3185 | "number": 331
3186 | }
3187 | },
3188 | "munlock": {
3189 | "darwin": {
3190 | "number": 204,
3191 | "name": "munlock",
3192 | "desc": "lock (unlock) physical pages in memory"
3193 | },
3194 | "linux": {
3195 | "number": 150,
3196 | "name": "munlock",
3197 | "desc": "lock and unlock memory"
3198 | }
3199 | },
3200 | "recvmsg": {
3201 | "darwin": {
3202 | "number": 27,
3203 | "name": "recvmsg",
3204 | "desc": "receive a message from a socket"
3205 | },
3206 | "linux": {
3207 | "number": 519,
3208 | "name": "recvmsg",
3209 | "desc": "receive a message from a socket"
3210 | }
3211 | },
3212 | "fstatfs": {
3213 | "darwin": {
3214 | "number": 158,
3215 | "name": "fstatfs",
3216 | "desc": "get file system statistics"
3217 | },
3218 | "linux": {
3219 | "number": 138,
3220 | "name": "fstatfs",
3221 | "desc": "get filesystem statistics"
3222 | }
3223 | },
3224 | "process_policy": {
3225 | "darwin": {
3226 | "name": "process_policy",
3227 | "number": 323
3228 | }
3229 | },
3230 | "mlock2": {
3231 | "linux": {
3232 | "number": 325,
3233 | "name": "mlock2",
3234 | "desc": "lock and unlock memory"
3235 | }
3236 | },
3237 | "pid_resume": {
3238 | "darwin": {
3239 | "name": "pid_resume",
3240 | "number": 434
3241 | }
3242 | },
3243 | "aio_suspend_nocancel": {
3244 | "darwin": {
3245 | "name": "aio_suspend_nocancel",
3246 | "number": 421
3247 | }
3248 | },
3249 | "mq_open": {
3250 | "linux": {
3251 | "number": 240,
3252 | "name": "mq_open",
3253 | "desc": "open a message queue"
3254 | }
3255 | },
3256 | "sysctlbyname": {
3257 | "darwin": {
3258 | "number": 274,
3259 | "name": "sysctlbyname",
3260 | "desc": "get or set system information"
3261 | }
3262 | },
3263 | "__mac_getfsstat": {
3264 | "darwin": {
3265 | "name": "__mac_getfsstat",
3266 | "number": 426
3267 | }
3268 | },
3269 | "audit": {
3270 | "darwin": {
3271 | "number": 350,
3272 | "name": "audit",
3273 | "desc": "commit BSM audit record to audit log"
3274 | }
3275 | },
3276 | "clock_adjtime": {
3277 | "linux": {
3278 | "name": "clock_adjtime",
3279 | "number": 305
3280 | }
3281 | },
3282 | "socket_delegate": {
3283 | "darwin": {
3284 | "name": "socket_delegate",
3285 | "number": 450
3286 | }
3287 | },
3288 | "auditon": {
3289 | "darwin": {
3290 | "number": 351,
3291 | "name": "auditon",
3292 | "desc": "configure system audit parameters"
3293 | }
3294 | },
3295 | "shared_region_map_and_slide_np": {
3296 | "darwin": {
3297 | "name": "shared_region_map_and_slide_np",
3298 | "number": 438
3299 | }
3300 | },
3301 | "aio_fsync": {
3302 | "darwin": {
3303 | "name": "aio_fsync",
3304 | "number": 313
3305 | }
3306 | },
3307 | "guarded_pwrite_np": {
3308 | "darwin": {
3309 | "name": "guarded_pwrite_np",
3310 | "number": 486
3311 | }
3312 | },
3313 | "psynch_rw_unlock2": {
3314 | "darwin": {
3315 | "name": "psynch_rw_unlock2",
3316 | "number": 309
3317 | }
3318 | },
3319 | "lio_listio": {
3320 | "darwin": {
3321 | "name": "lio_listio",
3322 | "number": 320
3323 | }
3324 | },
3325 | "setdomainname": {
3326 | "linux": {
3327 | "number": 171,
3328 | "name": "setdomainname",
3329 | "desc": "get/set NIS domain name"
3330 | }
3331 | },
3332 | "lseek": {
3333 | "darwin": {
3334 | "number": 199,
3335 | "name": "lseek",
3336 | "desc": "reposition read/write file offset"
3337 | },
3338 | "linux": {
3339 | "number": 8,
3340 | "name": "lseek",
3341 | "desc": "reposition read/write file offset"
3342 | }
3343 | },
3344 | "flistxattr": {
3345 | "darwin": {
3346 | "number": 241,
3347 | "name": "flistxattr",
3348 | "desc": "list extended attribute names"
3349 | },
3350 | "linux": {
3351 | "number": 196,
3352 | "name": "flistxattr",
3353 | "desc": "list extended attribute names"
3354 | }
3355 | },
3356 | "rt_sigtimedwait": {
3357 | "linux": {
3358 | "number": 523,
3359 | "name": "rt_sigtimedwait",
3360 | "desc": "synchronously wait for"
3361 | }
3362 | },
3363 | "__pthread_canceled": {
3364 | "darwin": {
3365 | "name": "__pthread_canceled",
3366 | "number": 333
3367 | }
3368 | },
3369 | "auditctl": {
3370 | "darwin": {
3371 | "number": 359,
3372 | "name": "auditctl",
3373 | "desc": "configure system audit parameters"
3374 | }
3375 | },
3376 | "recvmsg_nocancel": {
3377 | "darwin": {
3378 | "name": "recvmsg_nocancel",
3379 | "number": 401
3380 | }
3381 | },
3382 | "io_getevents": {
3383 | "linux": {
3384 | "number": 208,
3385 | "name": "io_getevents",
3386 | "desc": "read asynchronous I/O events from the completion queue"
3387 | }
3388 | },
3389 | "guarded_write_np": {
3390 | "darwin": {
3391 | "name": "guarded_write_np",
3392 | "number": 485
3393 | }
3394 | },
3395 | "getattrlistat": {
3396 | "darwin": {
3397 | "name": "getattrlistat",
3398 | "number": 476
3399 | }
3400 | },
3401 | "clock_getres": {
3402 | "linux": {
3403 | "number": 229,
3404 | "name": "clock_getres",
3405 | "desc": "clock and time functions"
3406 | }
3407 | },
3408 | "exchangedata": {
3409 | "darwin": {
3410 | "number": 223,
3411 | "name": "exchangedata",
3412 | "desc": "atomically exchange data between two files"
3413 | }
3414 | },
3415 | "preadv": {
3416 | "linux": {
3417 | "number": 534,
3418 | "name": "preadv",
3419 | "desc": "read or write data into multiple"
3420 | }
3421 | },
3422 | "fileport_makeport": {
3423 | "darwin": {
3424 | "name": "fileport_makeport",
3425 | "number": 430
3426 | }
3427 | },
3428 | "mmap": {
3429 | "darwin": {
3430 | "number": 197,
3431 | "name": "mmap",
3432 | "desc": "allocate memory, or map files or devices into memory"
3433 | },
3434 | "linux": {
3435 | "number": 9,
3436 | "name": "mmap",
3437 | "desc": "map or unmap files or devices into memory"
3438 | }
3439 | },
3440 | "timer_delete": {
3441 | "linux": {
3442 | "number": 226,
3443 | "name": "timer_delete",
3444 | "desc": "delete a POSIX per-process timer"
3445 | }
3446 | },
3447 | "lchown": {
3448 | "darwin": {
3449 | "number": 364,
3450 | "name": "lchown",
3451 | "desc": "change owner and group of a file"
3452 | },
3453 | "linux": {
3454 | "number": 94,
3455 | "name": "lchown",
3456 | "desc": "change ownership of a file"
3457 | }
3458 | },
3459 | "ioprio_set": {
3460 | "linux": {
3461 | "number": 251,
3462 | "name": "ioprio_set",
3463 | "desc": "get/set I/O scheduling class and priority"
3464 | }
3465 | },
3466 | "delete_module": {
3467 | "linux": {
3468 | "number": 176,
3469 | "name": "delete_module",
3470 | "desc": "unload a kernel module"
3471 | }
3472 | },
3473 | "guarded_close_np": {
3474 | "darwin": {
3475 | "name": "guarded_close_np",
3476 | "number": 442
3477 | }
3478 | },
3479 | "read": {
3480 | "darwin": {
3481 | "number": 3,
3482 | "name": "read",
3483 | "desc": "read input"
3484 | },
3485 | "linux": {
3486 | "number": 0,
3487 | "name": "read",
3488 | "desc": "read from a file descriptor"
3489 | }
3490 | },
3491 | "fchflags": {
3492 | "darwin": {
3493 | "number": 35,
3494 | "name": "fchflags",
3495 | "desc": "set file flags"
3496 | }
3497 | },
3498 | "ustat": {
3499 | "linux": {
3500 | "number": 136,
3501 | "name": "ustat",
3502 | "desc": "get filesystem statistics"
3503 | }
3504 | },
3505 | "renameat": {
3506 | "darwin": {
3507 | "name": "renameat",
3508 | "number": 465
3509 | },
3510 | "linux": {
3511 | "number": 264,
3512 | "name": "renameat",
3513 | "desc": "change the name or location of a file"
3514 | }
3515 | },
3516 | "fsync": {
3517 | "darwin": {
3518 | "number": 95,
3519 | "name": "fsync",
3520 | "desc": "synchronize a file's in-core state with that on disk"
3521 | },
3522 | "linux": {
3523 | "number": 74,
3524 | "name": "fsync",
3525 | "desc": "synchronize a file's in-core state with storage"
3526 | }
3527 | },
3528 | "bpf": {
3529 | "linux": {
3530 | "number": 321,
3531 | "name": "bpf",
3532 | "desc": "perform a command on an extended BPF map or program"
3533 | }
3534 | },
3535 | "epoll_pwait": {
3536 | "linux": {
3537 | "number": 281,
3538 | "name": "epoll_pwait",
3539 | "desc": "wait for an I/O event on an epoll file"
3540 | }
3541 | },
3542 | "__mac_set_lctx": {
3543 | "darwin": {
3544 | "name": "__mac_set_lctx",
3545 | "number": 393
3546 | }
3547 | },
3548 | "shmsys": {
3549 | "darwin": {
3550 | "name": "shmsys",
3551 | "number": 253
3552 | }
3553 | },
3554 | "kas_info": {
3555 | "darwin": {
3556 | "name": "kas_info",
3557 | "number": 439
3558 | }
3559 | },
3560 | "disconnectx": {
3561 | "darwin": {
3562 | "name": "disconnectx",
3563 | "number": 448
3564 | }
3565 | },
3566 | "getfsstat64": {
3567 | "darwin": {
3568 | "name": "getfsstat64",
3569 | "number": 347
3570 | }
3571 | },
3572 | "settid_with_pid": {
3573 | "darwin": {
3574 | "name": "settid_with_pid",
3575 | "number": 311
3576 | }
3577 | },
3578 | "psynch_mutexwait": {
3579 | "darwin": {
3580 | "name": "psynch_mutexwait",
3581 | "number": 301
3582 | }
3583 | },
3584 | "signalfd": {
3585 | "linux": {
3586 | "number": 282,
3587 | "name": "signalfd",
3588 | "desc": "create a file descriptor for accepting signals"
3589 | }
3590 | },
3591 | "sendmmsg": {
3592 | "linux": {
3593 | "number": 538,
3594 | "name": "sendmmsg",
3595 | "desc": "send multiple messages on a socket"
3596 | }
3597 | },
3598 | "kdebug_trace64": {
3599 | "darwin": {
3600 | "name": "kdebug_trace64",
3601 | "number": 179
3602 | }
3603 | },
3604 | "getresuid": {
3605 | "linux": {
3606 | "number": 118,
3607 | "name": "getresuid",
3608 | "desc": "get real, effective and saved user/group IDs"
3609 | }
3610 | },
3611 | "getitimer": {
3612 | "darwin": {
3613 | "number": 86,
3614 | "name": "getitimer",
3615 | "desc": "get/set value of interval timer"
3616 | },
3617 | "linux": {
3618 | "number": 36,
3619 | "name": "getitimer",
3620 | "desc": "get or set value of an interval timer"
3621 | }
3622 | },
3623 | "getlogin": {
3624 | "darwin": {
3625 | "number": 49,
3626 | "name": "getlogin",
3627 | "desc": "get/set login name"
3628 | }
3629 | },
3630 | "getgid": {
3631 | "darwin": {
3632 | "number": 47,
3633 | "name": "getgid",
3634 | "desc": "get group process identification"
3635 | },
3636 | "linux": {
3637 | "number": 104,
3638 | "name": "getgid",
3639 | "desc": "get group identity"
3640 | }
3641 | },
3642 | "proc_trace_log": {
3643 | "darwin": {
3644 | "name": "proc_trace_log",
3645 | "number": 477
3646 | }
3647 | },
3648 | "tgkill": {
3649 | "linux": {
3650 | "number": 234,
3651 | "name": "tgkill",
3652 | "desc": "send a signal to a thread"
3653 | }
3654 | },
3655 | "__sigwait": {
3656 | "darwin": {
3657 | "name": "__sigwait",
3658 | "number": 330
3659 | }
3660 | },
3661 | "msgctl": {
3662 | "darwin": {
3663 | "name": "msgctl",
3664 | "number": 258
3665 | },
3666 | "linux": {
3667 | "number": 71,
3668 | "name": "msgctl",
3669 | "desc": "System V message control operations"
3670 | }
3671 | },
3672 | "fremovexattr": {
3673 | "darwin": {
3674 | "number": 239,
3675 | "name": "fremovexattr",
3676 | "desc": "remove an extended attribute value"
3677 | },
3678 | "linux": {
3679 | "number": 199,
3680 | "name": "fremovexattr",
3681 | "desc": "remove an extended"
3682 | }
3683 | },
3684 | "exit": {
3685 | "darwin": {
3686 | "number": 1,
3687 | "name": "exit",
3688 | "desc": "perform normal program termination"
3689 | },
3690 | "linux": {
3691 | "number": 60,
3692 | "name": "exit",
3693 | "desc": "terminate the calling process"
3694 | }
3695 | },
3696 | "linkat": {
3697 | "darwin": {
3698 | "name": "linkat",
3699 | "number": 471
3700 | },
3701 | "linux": {
3702 | "number": 265,
3703 | "name": "linkat",
3704 | "desc": "make a new name for a file"
3705 | }
3706 | },
3707 | "inotify_rm_watch": {
3708 | "linux": {
3709 | "number": 255,
3710 | "name": "inotify_rm_watch",
3711 | "desc": "remove an existing watch from an inotify instance"
3712 | }
3713 | },
3714 | "setrlimit": {
3715 | "darwin": {
3716 | "number": 195,
3717 | "name": "setrlimit",
3718 | "desc": "control maximum system resource consumption"
3719 | },
3720 | "linux": {
3721 | "number": 160,
3722 | "name": "setrlimit",
3723 | "desc": "get/set resource limits"
3724 | }
3725 | },
3726 | "getdirentries": {
3727 | "darwin": {
3728 | "number": 196,
3729 | "name": "getdirentries",
3730 | "desc": "get directory entries in a filesystem independent format"
3731 | }
3732 | },
3733 | "__mac_set_proc": {
3734 | "darwin": {
3735 | "name": "__mac_set_proc",
3736 | "number": 387
3737 | }
3738 | },
3739 | "fchmod_extended": {
3740 | "darwin": {
3741 | "name": "fchmod_extended",
3742 | "number": 283
3743 | }
3744 | },
3745 | "timer_create": {
3746 | "linux": {
3747 | "number": 526,
3748 | "name": "timer_create",
3749 | "desc": "create a POSIX per-process timer"
3750 | }
3751 | },
3752 | "fchmodat": {
3753 | "darwin": {
3754 | "name": "fchmodat",
3755 | "number": 467
3756 | },
3757 | "linux": {
3758 | "number": 268,
3759 | "name": "fchmodat",
3760 | "desc": "change permissions of a file"
3761 | }
3762 | },
3763 | "inotify_add_watch": {
3764 | "linux": {
3765 | "number": 254,
3766 | "name": "inotify_add_watch",
3767 | "desc": "add a watch to an initialized inotify instance"
3768 | }
3769 | },
3770 | "fstatfs64": {
3771 | "darwin": {
3772 | "number": 346,
3773 | "name": "fstatfs64",
3774 | "desc": "get file system statistics"
3775 | }
3776 | },
3777 | "fstatat64": {
3778 | "darwin": {
3779 | "name": "fstatat64",
3780 | "number": 470
3781 | }
3782 | },
3783 | "symlink": {
3784 | "darwin": {
3785 | "number": 57,
3786 | "name": "symlink",
3787 | "desc": "make symbolic link to a file"
3788 | },
3789 | "linux": {
3790 | "number": 88,
3791 | "name": "symlink",
3792 | "desc": "make a new name for a file"
3793 | }
3794 | },
3795 | "fileport_makefd": {
3796 | "darwin": {
3797 | "name": "fileport_makefd",
3798 | "number": 431
3799 | }
3800 | },
3801 | "timer_gettime": {
3802 | "linux": {
3803 | "number": 224,
3804 | "name": "timer_gettime",
3805 | "desc": "arm/disarm and fetch state of POSIX"
3806 | }
3807 | },
3808 | "setegid": {
3809 | "darwin": {
3810 | "number": 182,
3811 | "name": "setegid",
3812 | "desc": "set user and group ID"
3813 | }
3814 | },
3815 | "sysinfo": {
3816 | "linux": {
3817 | "number": 99,
3818 | "name": "sysinfo",
3819 | "desc": "returns information on overall system statistics"
3820 | }
3821 | },
3822 | "shmat": {
3823 | "darwin": {
3824 | "number": 262,
3825 | "name": "shmat",
3826 | "desc": "map/unmap shared memory"
3827 | },
3828 | "linux": {
3829 | "number": 30,
3830 | "name": "shmat",
3831 | "desc": "System V shared memory operations"
3832 | }
3833 | },
3834 | "copy_file_range": {
3835 | "linux": {
3836 | "number": 326,
3837 | "name": "copy_file_range",
3838 | "desc": "Copy a range of data from one file to another"
3839 | }
3840 | },
3841 | "munlockall": {
3842 | "darwin": {
3843 | "name": "munlockall",
3844 | "number": 325
3845 | },
3846 | "linux": {
3847 | "number": 152,
3848 | "name": "munlockall",
3849 | "desc": "lock and unlock memory"
3850 | }
3851 | },
3852 | "msync": {
3853 | "darwin": {
3854 | "number": 65,
3855 | "name": "msync",
3856 | "desc": "synchronize a mapped region"
3857 | },
3858 | "linux": {
3859 | "number": 26,
3860 | "name": "msync",
3861 | "desc": "synchronize a file with a memory map"
3862 | }
3863 | },
3864 | "getdirentriesattr": {
3865 | "darwin": {
3866 | "name": "getdirentriesattr",
3867 | "number": 222
3868 | }
3869 | },
3870 | "ffsctl": {
3871 | "darwin": {
3872 | "name": "ffsctl",
3873 | "number": 245
3874 | }
3875 | },
3876 | "waitevent": {
3877 | "darwin": {
3878 | "name": "waitevent",
3879 | "number": 232
3880 | }
3881 | },
3882 | "msync_nocancel": {
3883 | "darwin": {
3884 | "name": "msync_nocancel",
3885 | "number": 405
3886 | }
3887 | },
3888 | "getegid": {
3889 | "darwin": {
3890 | "number": 43,
3891 | "name": "getegid",
3892 | "desc": "get group process identification"
3893 | },
3894 | "linux": {
3895 | "number": 108,
3896 | "name": "getegid",
3897 | "desc": "get group identity"
3898 | }
3899 | },
3900 | "access_extended": {
3901 | "darwin": {
3902 | "name": "access_extended",
3903 | "number": 284
3904 | }
3905 | },
3906 | "execveat": {
3907 | "linux": {
3908 | "number": 545,
3909 | "name": "execveat",
3910 | "desc": "execute program relative to a directory file descriptor"
3911 | }
3912 | },
3913 | "umount2": {
3914 | "linux": {
3915 | "number": 166,
3916 | "name": "umount2",
3917 | "desc": "unmount filesystem"
3918 | }
3919 | },
3920 | "getfh": {
3921 | "darwin": {
3922 | "number": 161,
3923 | "name": "getfh",
3924 | "desc": "get file handle"
3925 | }
3926 | },
3927 | "getattrlist": {
3928 | "darwin": {
3929 | "number": 220,
3930 | "name": "getattrlist",
3931 | "desc": "get file system attributes"
3932 | }
3933 | },
3934 | "kdebug_trace": {
3935 | "darwin": {
3936 | "name": "kdebug_trace",
3937 | "number": 180
3938 | }
3939 | },
3940 | "memorystatus_get_level": {
3941 | "darwin": {
3942 | "name": "memorystatus_get_level",
3943 | "number": 453
3944 | }
3945 | },
3946 | "select_nocancel": {
3947 | "darwin": {
3948 | "name": "select_nocancel",
3949 | "number": 407
3950 | }
3951 | },
3952 | "sendto_nocancel": {
3953 | "darwin": {
3954 | "name": "sendto_nocancel",
3955 | "number": 413
3956 | }
3957 | },
3958 | "umask_extended": {
3959 | "darwin": {
3960 | "name": "umask_extended",
3961 | "number": 278
3962 | }
3963 | },
3964 | "removexattr": {
3965 | "darwin": {
3966 | "number": 238,
3967 | "name": "removexattr",
3968 | "desc": "remove an extended attribute value"
3969 | },
3970 | "linux": {
3971 | "number": 197,
3972 | "name": "removexattr",
3973 | "desc": "remove an extended"
3974 | }
3975 | },
3976 | "quotactl": {
3977 | "darwin": {
3978 | "number": 165,
3979 | "name": "quotactl",
3980 | "desc": "manipulate filesystem quotas"
3981 | },
3982 | "linux": {
3983 | "number": 179,
3984 | "name": "quotactl",
3985 | "desc": "manipulate disk quotas"
3986 | }
3987 | },
3988 | "sendmsg_x": {
3989 | "darwin": {
3990 | "name": "sendmsg_x",
3991 | "number": 481
3992 | }
3993 | },
3994 | "psynch_cvclrprepost": {
3995 | "darwin": {
3996 | "name": "psynch_cvclrprepost",
3997 | "number": 312
3998 | }
3999 | },
4000 | "rmdir": {
4001 | "darwin": {
4002 | "number": 137,
4003 | "name": "rmdir",
4004 | "desc": "remove a directory file"
4005 | },
4006 | "linux": {
4007 | "number": 84,
4008 | "name": "rmdir",
4009 | "desc": "delete a directory"
4010 | }
4011 | },
4012 | "fsync_nocancel": {
4013 | "darwin": {
4014 | "name": "fsync_nocancel",
4015 | "number": 408
4016 | }
4017 | },
4018 | "fork": {
4019 | "darwin": {
4020 | "number": 2,
4021 | "name": "fork",
4022 | "desc": "create a new process"
4023 | },
4024 | "linux": {
4025 | "number": 57,
4026 | "name": "fork",
4027 | "desc": "create a child process"
4028 | }
4029 | },
4030 | "get_mempolicy": {
4031 | "linux": {
4032 | "number": 239,
4033 | "name": "get_mempolicy",
4034 | "desc": "retrieve NUMA memory policy for a thread"
4035 | }
4036 | },
4037 | "io_submit": {
4038 | "linux": {
4039 | "number": 544,
4040 | "name": "io_submit",
4041 | "desc": "submit asynchronous I/O blocks for processing"
4042 | }
4043 | },
4044 | "get_robust_list": {
4045 | "linux": {
4046 | "number": 531,
4047 | "name": "get_robust_list",
4048 | "desc": "get/set list of robust futexes"
4049 | }
4050 | },
4051 | "sched_yield": {
4052 | "linux": {
4053 | "number": 24,
4054 | "name": "sched_yield",
4055 | "desc": "yield the processor"
4056 | }
4057 | },
4058 | "link": {
4059 | "darwin": {
4060 | "number": 9,
4061 | "name": "link",
4062 | "desc": "make a hard file link"
4063 | },
4064 | "linux": {
4065 | "number": 86,
4066 | "name": "link",
4067 | "desc": "make a new name for a file"
4068 | }
4069 | },
4070 | "ptrace": {
4071 | "darwin": {
4072 | "number": 26,
4073 | "name": "ptrace",
4074 | "desc": "process tracing and debugging"
4075 | },
4076 | "linux": {
4077 | "number": 521,
4078 | "name": "ptrace",
4079 | "desc": "process trace"
4080 | }
4081 | },
4082 | "io_cancel": {
4083 | "linux": {
4084 | "number": 210,
4085 | "name": "io_cancel",
4086 | "desc": "cancel an outstanding asynchronous I/O operation"
4087 | }
4088 | },
4089 | "fallocate": {
4090 | "linux": {
4091 | "number": 285,
4092 | "name": "fallocate",
4093 | "desc": "manipulate file space"
4094 | }
4095 | },
4096 | "wait4": {
4097 | "darwin": {
4098 | "number": 7,
4099 | "name": "wait4",
4100 | "desc": "wait for process termination"
4101 | },
4102 | "linux": {
4103 | "number": 61,
4104 | "name": "wait4",
4105 | "desc": "wait for process to change state, BSD style"
4106 | }
4107 | },
4108 | "__mac_get_lcid": {
4109 | "darwin": {
4110 | "name": "__mac_get_lcid",
4111 | "number": 391
4112 | }
4113 | },
4114 | "timerfd_settime": {
4115 | "linux": {
4116 | "number": 286,
4117 | "name": "timerfd_settime",
4118 | "desc": "timers that notify"
4119 | }
4120 | },
4121 | "sched_setscheduler": {
4122 | "linux": {
4123 | "number": 144,
4124 | "name": "sched_setscheduler",
4125 | "desc": "set and get scheduling pol\u2010"
4126 | }
4127 | },
4128 | "chmod_extended": {
4129 | "darwin": {
4130 | "name": "chmod_extended",
4131 | "number": 282
4132 | }
4133 | },
4134 | "sfi_ctl": {
4135 | "darwin": {
4136 | "name": "sfi_ctl",
4137 | "number": 456
4138 | }
4139 | },
4140 | "getaudit_addr": {
4141 | "darwin": {
4142 | "number": 357,
4143 | "name": "getaudit_addr",
4144 | "desc": "retrieve audit session state"
4145 | }
4146 | },
4147 | "creat": {
4148 | "linux": {
4149 | "number": 85,
4150 | "name": "creat",
4151 | "desc": "open and possibly create a file"
4152 | }
4153 | },
4154 | "pread64": {
4155 | "linux": {
4156 | "number": 17,
4157 | "name": "pread64",
4158 | "desc": "read from or write to a file descriptor at a given"
4159 | }
4160 | },
4161 | "pread_nocancel": {
4162 | "darwin": {
4163 | "name": "pread_nocancel",
4164 | "number": 414
4165 | }
4166 | },
4167 | "stat64": {
4168 | "darwin": {
4169 | "number": 338,
4170 | "name": "stat64",
4171 | "desc": "get file status"
4172 | }
4173 | },
4174 | "vm_pressure_monitor": {
4175 | "darwin": {
4176 | "name": "vm_pressure_monitor",
4177 | "number": 296
4178 | }
4179 | },
4180 | "lstat_extended": {
4181 | "darwin": {
4182 | "name": "lstat_extended",
4183 | "number": 280
4184 | }
4185 | },
4186 | "telemetry": {
4187 | "darwin": {
4188 | "name": "telemetry",
4189 | "number": 451
4190 | }
4191 | },
4192 | "tkill": {
4193 | "linux": {
4194 | "number": 200,
4195 | "name": "tkill",
4196 | "desc": "send a signal to a thread"
4197 | }
4198 | },
4199 | "setpriority": {
4200 | "darwin": {
4201 | "number": 96,
4202 | "name": "setpriority",
4203 | "desc": "get/set program scheduling priority"
4204 | },
4205 | "linux": {
4206 | "number": 141,
4207 | "name": "setpriority",
4208 | "desc": "get/set program scheduling priority"
4209 | }
4210 | },
4211 | "mincore": {
4212 | "darwin": {
4213 | "number": 78,
4214 | "name": "mincore",
4215 | "desc": "determine residency of memory pages"
4216 | },
4217 | "linux": {
4218 | "number": 27,
4219 | "name": "mincore",
4220 | "desc": "determine whether pages are resident in memory"
4221 | }
4222 | },
4223 | "mq_notify": {
4224 | "linux": {
4225 | "number": 527,
4226 | "name": "mq_notify",
4227 | "desc": "register for notification when a message is available"
4228 | }
4229 | },
4230 | "sendfile": {
4231 | "darwin": {
4232 | "number": 337,
4233 | "name": "sendfile",
4234 | "desc": "send a file to a socket"
4235 | },
4236 | "linux": {
4237 | "number": 40,
4238 | "name": "sendfile",
4239 | "desc": "transfer data between file descriptors"
4240 | }
4241 | },
4242 | "stat": {
4243 | "darwin": {
4244 | "number": 188,
4245 | "name": "stat",
4246 | "desc": "get file status"
4247 | },
4248 | "linux": {
4249 | "number": 4,
4250 | "name": "stat",
4251 | "desc": "get file status"
4252 | }
4253 | },
4254 | "restart_syscall": {
4255 | "linux": {
4256 | "number": 219,
4257 | "name": "restart_syscall",
4258 | "desc": "restart a system call after interruption by a stop"
4259 | }
4260 | },
4261 | "truncate": {
4262 | "darwin": {
4263 | "number": 200,
4264 | "name": "truncate",
4265 | "desc": "truncate or extend a file to a specified length"
4266 | },
4267 | "linux": {
4268 | "number": 76,
4269 | "name": "truncate",
4270 | "desc": "truncate a file to a specified length"
4271 | }
4272 | },
4273 | "sigsuspend": {
4274 | "darwin": {
4275 | "number": 111,
4276 | "name": "sigsuspend",
4277 | "desc": "atomically release blocked signals and wait for interrupt"
4278 | }
4279 | },
4280 | "statfs64": {
4281 | "darwin": {
4282 | "number": 345,
4283 | "name": "statfs64",
4284 | "desc": "get file system statistics"
4285 | }
4286 | },
4287 | "readlink": {
4288 | "darwin": {
4289 | "number": 58,
4290 | "name": "readlink",
4291 | "desc": "read value of a symbolic link"
4292 | },
4293 | "linux": {
4294 | "number": 89,
4295 | "name": "readlink",
4296 | "desc": "read value of a symbolic link"
4297 | }
4298 | },
4299 | "psynch_rw_longrdlock": {
4300 | "darwin": {
4301 | "name": "psynch_rw_longrdlock",
4302 | "number": 297
4303 | }
4304 | },
4305 | "__mac_get_mount": {
4306 | "darwin": {
4307 | "name": "__mac_get_mount",
4308 | "number": 425
4309 | }
4310 | },
4311 | "getuid": {
4312 | "darwin": {
4313 | "number": 24,
4314 | "name": "getuid",
4315 | "desc": "get user identification"
4316 | },
4317 | "linux": {
4318 | "number": 102,
4319 | "name": "getuid",
4320 | "desc": "get user identity"
4321 | }
4322 | },
4323 | "setwgroups": {
4324 | "darwin": {
4325 | "name": "setwgroups",
4326 | "number": 289
4327 | }
4328 | },
4329 | "open_by_handle_at": {
4330 | "linux": {
4331 | "number": 304,
4332 | "name": "open_by_handle_at",
4333 | "desc": "obtain handle for a pathname"
4334 | }
4335 | },
4336 | "fpathconf": {
4337 | "darwin": {
4338 | "number": 192,
4339 | "name": "fpathconf",
4340 | "desc": "get configurable pathname variables"
4341 | }
4342 | },
4343 | "chown": {
4344 | "darwin": {
4345 | "number": 16,
4346 | "name": "chown",
4347 | "desc": "change owner and group of a file"
4348 | },
4349 | "linux": {
4350 | "number": 92,
4351 | "name": "chown",
4352 | "desc": "change ownership of a file"
4353 | }
4354 | },
4355 | "finit_module": {
4356 | "linux": {
4357 | "number": 313,
4358 | "name": "finit_module",
4359 | "desc": "load a kernel module"
4360 | }
4361 | },
4362 | "time": {
4363 | "linux": {
4364 | "number": 201,
4365 | "name": "time",
4366 | "desc": "get time in seconds"
4367 | }
4368 | },
4369 | "setaudit_addr": {
4370 | "darwin": {
4371 | "number": 358,
4372 | "name": "setaudit_addr",
4373 | "desc": "set audit session state"
4374 | }
4375 | }
4376 | }
4377 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | #! /usr/bin/node
2 | 'use strict';
3 |
4 | var child = require('child_process'),
5 | chalk = require('chalk'),
6 | program = require('commander'),
7 | columnify = require('columnify'),
8 | calls = require('./data/syscalls'),
9 | errors = require('./data/errno'),
10 | _ = require('lodash'),
11 | config = require('./package.json'),
12 | log = console.log,
13 | args = process.argv,
14 | platform = process.platform;
15 |
16 | // CLI program configuring
17 | program
18 | .version(config.version)
19 | .description(chalk.cyan.bold(
20 | 'ctrace - well-formatted and improved trace system calls and signals (when the debugger does not help)'
21 | ))
22 | .option('-p, --pid [pid]', 'process id to trace')
23 | .option('-c, --cmd [cmd]', 'command to trace')
24 | .option('-f, --filter [syscall,]', 'trace syscall only from list', function(value) {
25 | return value.split(',');
26 | })
27 | .option('-v, --verbose', 'print all syscalls (by default only with errors)')
28 | .on('--help', function(){
29 | console.log(' Examples:');
30 | console.log('');
31 | console.log(' $ ctrace -p 2312 -v');
32 | console.log(' $ ctrace -c "ping google.com"');
33 | console.log('');
34 | });
35 | program.parse(process.argv);
36 |
37 | // Handle keyboard interrupting
38 | function interruption() {
39 | log(chalk.yellow.bold('\nExecuting interrupted by signal ...'));
40 | }
41 | process.on('SIGTERM', interruption);
42 | process.on('SIGINT', interruption);
43 |
44 | // Platform specific binary and arguments
45 | var utility = {
46 | darwin: { bin: 'dtruss', args: ['-e', '-f', '-L'] },
47 | linux: { bin: 'strace', args: ['-y', '-v', '-x', '-f', '-tt', '-T'] }
48 | },
49 | parser = { linux: parseStraceData, darwin: parseDtrussData },
50 | report = { syscalls: {}, total: {time: 0, count: 0, errors: 0} };
51 |
52 | function getCommandLine() {
53 |
54 | // Supported only darwin (with dtruss) and linux (with strace)
55 | if (['darwin', 'linux'].indexOf(platform) < 0) {
56 | log(chalk.red.bold('Current platform not supported'));
57 | process.exit();
58 | }
59 | // Build command and arguments
60 | var args = utility[platform].args;
61 | if (program.cmd && typeof program.cmd == 'string') {
62 | args = args.concat(program.cmd.split(' '));
63 | } else if (program.pid) {
64 | args.push('-p');
65 | args.push(program.pid);
66 | } else {
67 | program.help();
68 | process.exit();
69 | }
70 | return { bin: utility[platform].bin, args: args };
71 | }
72 |
73 | function collectStraceOutput(syscall, result, time) {
74 |
75 | var exit = parseInt(result || 0, 10),
76 | time = parseFloat(_.trim(time, '<>'), 10);
77 | if (syscall) {
78 | if (!report.syscalls[syscall.name]) {
79 | report.syscalls[syscall.name] = {
80 | name: syscall.name, count: 0, errors: {}, timings: []
81 | };
82 | }
83 | var call = report.syscalls[syscall.name];
84 | call.count += 1;
85 | report.total.count += 1;
86 | if (time) {
87 | call.timings.push(time);
88 | report.total.time += time;
89 | }
90 | if (exit < 0) {
91 | var code = result.split(exit)[1].split('<')[0].trim();
92 | if (!call.errors[code]) {
93 | call.errors[code] = 1;
94 | } else {
95 | call.errors[code] += 1;
96 | }
97 | report.total.errors += 1;
98 | }
99 | }
100 | }
101 |
102 | function collectReport() {
103 |
104 | if (!report.total.count) {
105 | return;
106 | }
107 | var syscalls = [], columned = []
108 |
109 | syscalls = _.map(report.syscalls, function(syscall, name) {
110 | syscall.total = 0;
111 | // Calculate total syscalls time
112 | _.each(syscall.timings, function(time) {
113 | syscall.total += time;
114 | });
115 | syscall.percent = (syscall.total * 100 / report.total.time).toFixed(1);
116 | return syscall;
117 | }).sort(function(a, b) {
118 | return b.percent - a.percent;
119 | });
120 | columned.push({
121 | syscall: chalk.white.bold('*'),
122 | 'time %': 100,
123 | second: chalk.white.bold(report.total.time.toFixed(6)),
124 | calls: chalk.white.bold(report.total.count),
125 | description: '-',
126 | 'errorno (count)': chalk.white.bold('(' + report.total.errors + ')')
127 | })
128 | _.each(syscalls, function(syscall) {
129 | var doc = getSyscall(syscall.name) || {},
130 | row = {
131 | syscall: chalk.white.bold(syscall.name),
132 | 'time %': syscall.percent,
133 | second: syscall.total.toFixed(6),
134 | calls: syscall.count,
135 | description: doc ? doc.desc : ''
136 | };
137 | if (Object.keys(syscall.errors).length) {
138 | _.each(syscall.errors, function(count, err) {
139 | row['errorno (count)'] = chalk.red.bold(err) + ' (' + count + ') ';
140 | });
141 | } else {
142 | row['errorno (count)'] = '-';
143 | }
144 | columned.push(row);
145 | });
146 |
147 | log(chalk.white.bold(Array(150).join('-')));
148 | log(columnify(columned, {
149 | minWidth: 10,
150 | config: {
151 | syscall: {
152 | minWidth: 15
153 | },
154 | description: {
155 | maxWidth: 150
156 | }
157 | }
158 | }));
159 | log(chalk.white.bold(Array(150).join('-')));
160 | }
161 |
162 | function spawn() {
163 |
164 | var cp, cmd = getCommandLine(), delimiter = Array(5).join('-');
165 | // Spawn strace with command
166 | cp = child.spawn(cmd.bin, cmd.args, {env: process.env});
167 | cp.stdout.chunks = 0;
168 | // Target command output on stdout, stderr output will be ignored
169 | cp.stdout.on('data', function(data) {
170 | cp.stdout.chunks++;
171 | log(chalk.cyan(
172 | delimiter + ' ^ stdout chunk{' + cp.stdout.chunks + '} ' + delimiter
173 | ));
174 | log(chalk.white.bold(data.toString()));
175 | log(chalk.cyan(
176 | delimiter + ' $ stdout chunk{' + cp.stdout.chunks + '} ' + delimiter
177 | ));
178 | });
179 | // Strace output on stderr
180 | cp.stderr.on('data', function(data) {
181 | data = data.toString().split('\n');
182 | // Parse row tails
183 | if (cp.stderr.tail) {
184 | data[0] = cp.stderr.tail + data[0];
185 | delete cp.stderr.tail;
186 | }
187 | if (data[data.length - 1]) {
188 | cp.stderr.tail = data.pop();
189 | }
190 | var irregularEnd = new RegExp('\>\d{2}', 'igm');
191 | // Search incompleted or irregular rows
192 | _.each(data, function(value, i) {
193 | if (!value) {
194 | return;
195 | }
196 | // Glue incompleted rows
197 | if (!value.match(/\>$/)) {
198 | if (value && data[i + 2]) {
199 | value = value + data[i + 2];
200 | data[i] = value;
201 | data.splice(i + 1, 2);
202 | }
203 | }
204 | });
205 | parser[process.platform](data);
206 | });
207 | cp.on('exit', function(code, signal) {
208 | collectReport();
209 | process.exit();
210 | });
211 | return cp;
212 | }
213 |
214 | function getSyscall(name) {
215 |
216 | if (!name) {
217 | return;
218 | }
219 | try {
220 | var cleaned = _.trim(name, '_'),
221 | p1 = new RegExp('^' + name + '|' + name + '$', 'gi'),
222 | p2 = new RegExp('^' + cleaned + '|' + cleaned + '$', 'gi'),
223 | syscall =
224 | _.find(calls, function(v, k) {
225 | if (!v[platform]) {
226 | return false;
227 | }
228 | return v[platform].name === name || v[platform].name === cleaned;
229 | }) ||
230 | _.find(calls, function(v, k) {
231 | if (!v[platform]) {
232 | return false;
233 | }
234 | return v[platform].name.match(p1) || v[platform].name.match(p2);
235 | });
236 | return {
237 | name: name,
238 | // Synonym
239 | synonym: name != syscall[platform].name ? syscall[platform].name : '',
240 | // Number
241 | num: syscall ? syscall[platform].number : 'NULL',
242 | // Description
243 | desc: syscall ? syscall[platform].desc : 'undocumented',
244 | // Platfrom specific flag
245 | specific: syscall && _.keys(syscall).length == 1 ? platform : '',
246 | }
247 | } catch (err) {}
248 | return;
249 | }
250 |
251 | function canIPrintIt(name, exit) {
252 |
253 | var filtered = program.filter && program.filter.length && program.filter.indexOf(name) == -1;
254 | if (filtered) {
255 | return false;
256 | }
257 | if (platform == 'darwin') {
258 | return program.verbose || !(exit >= 0);
259 | }
260 | if (platform == 'linux') {
261 | return program.verbose || exit < 0;
262 | }
263 | }
264 |
265 | var pRegularRow = new RegExp('^(\\d{2}:|\\[).+\\d+>$'),
266 | pFork = new RegExp('(\\[pid\\s+\\d+\\])\\s(.+)');
267 |
268 | function parseStraceData(data) {
269 |
270 | // Parse each syscall row and colorize chunks
271 | // Regular row pattern
272 | _.each(data, function (row) {
273 | // Ignore empty rows
274 | if (!row) {
275 | return;
276 | }
277 | // Detect unfinished and resumed rows
278 | var unfinished = row.match(/unfinished/),
279 | resumed = row.match(/resumed/);
280 | // Detect regular (completed) rows
281 | if (!row.match(pRegularRow) && !row.split('(')[0].split(' ') && !unfinished && !resumed) {
282 | log(chalk.grey(row.replace(/\s+/, ' ')));
283 | return;
284 | }
285 | // Detect syscalls from child processes
286 | var fork = row.match(pFork);
287 | // Is syscall from forked process
288 | if (fork) {
289 | row = fork[2];
290 | fork = fork[1].replace(/\s+/ig, ':');
291 | }
292 | // Parse unfinished call rows
293 | if (unfinished) {
294 | var _first = row.indexOf(' '),
295 | timestamp = row.substr(0, _first).trim(),
296 | name = row.substr(_first + 1, row.indexOf('(') - _first - 1).trim(),
297 | syscall = getSyscall(name);
298 |
299 | collectStraceOutput(syscall, result, time);
300 |
301 | if (canIPrintIt(name, exit) && syscall) {
302 | log(
303 | fork
304 | ? chalk.blue.bold(fork) + chalk.grey(' [' + timestamp + ']')
305 | : chalk.grey('[' + timestamp + ']'),
306 | // Name with synonyms, number, description and platform specific flag
307 | chalk.magenta.bold(syscall.name + (syscall.synonym ? ' (' + syscall.synonym + ')': '')) +
308 | ', ' + chalk.white.bold(syscall.num) + ' -- ' + syscall.desc + ' ' +
309 | chalk.white.bold(syscall.specific),
310 | chalk.white.bold(row.split(name)[1])
311 | );
312 | }
313 | // Parse resumed call rows
314 | } else if (resumed) {
315 | var _first = row.indexOf(' '),
316 | timestamp = row.substr(0, _first).trim(),
317 | name = row.split('<...')[1].trim().split('resumed')[0].trim(),
318 | syscall = getSyscall(name);
319 |
320 | collectStraceOutput(syscall, result, time);
321 |
322 | if (canIPrintIt(name, exit) && syscall) {
323 | log(
324 | fork
325 | ? chalk.blue.bold(fork) + chalk.grey(' [' + timestamp + ']')
326 | : chalk.grey('[' + timestamp + ']'),
327 | // Name with synonyms, number, description and platform specific flag
328 | chalk.magenta.bold(syscall.name + (syscall.synonym ? ' (' + syscall.synonym + ')': '')) +
329 | ', ' + chalk.white.bold(syscall.num) + ' -- ' + syscall.desc + ' ' +
330 | chalk.white.bold(syscall.specific),
331 | chalk.white.bold('<... ' + row.split(name)[1])
332 | );
333 | }
334 | } else {
335 | var call = row.substr(0, row.lastIndexOf(' = ')).trim(),
336 | _first = call.indexOf(' '), _last = call.lastIndexOf(' '),
337 | timestamp = call.substr(0, _first).trim(),
338 | // Name
339 | name = call.substr(_first + 1, call.indexOf('(') - _first - 1).trim(),
340 | // Syscall document object
341 | syscall = getSyscall(name),
342 | // Arguments
343 | params = call.substr(_first).replace(name, '').trim(),
344 | // Result and timing
345 | result = row.substr(row.lastIndexOf(' = ') + 2).trim(),
346 | _first = result.indexOf(' '), _last = result.lastIndexOf(' '),
347 | // Exit code
348 | exit = result.substr(0, _first).trim(),
349 | // Returned value
350 | value = _.trim(
351 | (result.split(/\s/).length == 2) ? '' : result.substr(_first, _last).trim(), '<>'
352 | ),
353 | // Elapsed time
354 | time = result.substr(_last + 1).trim();
355 |
356 | collectStraceOutput(syscall, result, time);
357 |
358 | // Ignore syscalls not from the filter list
359 | if (canIPrintIt(name, exit) && syscall) {
360 | log(
361 | // Split syscall from master and child processes
362 | fork
363 | ? chalk.blue.bold(fork) + chalk.grey(' [' + timestamp + ']')
364 | : chalk.grey('[' + timestamp + ']'),
365 | // Name with synonyms, number, description and platform specific flag
366 | chalk.magenta.bold(syscall.name + (syscall.synonym ? ' (' + syscall.synonym + ')': '')) +
367 | ', ' + chalk.white.bold(syscall.num) + ' -- ' + syscall.desc || 'undocumented' +
368 | ' ' + chalk.white.bold(syscall.specific),
369 | // Arguments
370 | '\n\t' + chalk.grey(params),
371 | // Exit code
372 | chalk.white.bold('= ') + (exit < 0 ? chalk.red.bold(exit) : chalk.green.bold(exit)),
373 | // Returned value
374 | exit < 0 ? chalk.red.bold(value) : chalk.blue.bold(value),
375 | // Elapsed time
376 | chalk.cyan.bold(time)
377 | );
378 | }
379 | }
380 | });
381 | }
382 |
383 | function parseDtrussData(data) {
384 | // Parse each syscall row and colorize chunks
385 | _.each(data, function(row) {
386 | // Ignore empty rows
387 | if (!row) {
388 | return;
389 | }
390 | if (!row.match(/^\s+\d+.+\d+$/)) {
391 | if (row.match(/SYSCALL\(args\)/)) {
392 | return;
393 | }
394 | log(chalk.grey(row));
395 | return;
396 | }
397 | row = row.split('\t');
398 | var // Detect syscalls from child processes
399 | fork = row[0].match(/(\[pid\s+\d+\])\s(.+)/),
400 | // Elapsed time
401 | time = Number(row[0].trim().split(' ')[0]) / 1000000,
402 | call = row[0].trim().split(' ')[1].split('('),
403 | // Name
404 | name = call[0],
405 | // Arguments
406 | params = row[0].trim().split(name)[1],
407 | // Syscall document object
408 | syscall = getSyscall(name),
409 | result = row[2].trim().split('=')[1].trim().split(' '),
410 | // Returned value
411 | value = result[0],
412 | // Exit code
413 | exit = result[1],
414 | errno = exit.startsWith('Err') ? errors[platform][exit.split('#')[1]] : null;
415 |
416 | if (canIPrintIt(name, exit)) {
417 | log(
418 | // Split syscall from master and child processes
419 | fork ? chalk.blue.bold(fork) : '',
420 | // Name with synonyms, number, description and platform specific flag
421 | chalk.magenta.bold(syscall.name + (syscall.synonym ? ' (' + syscall.synonym + ')': '')) +
422 | ' ' + chalk.white.bold(syscall.num) + ' -- ' + (syscall.desc || 'undocumented') + ' ' + chalk.white.bold(syscall.specific),
423 | // Arguments
424 | '\n\t' + chalk.grey(params),
425 | // Exit code
426 | chalk.white.bold('= ') + (!(exit >= 0)
427 | ? chalk.red.bold(exit + ' ' + errno.code + ' : ' + errno.desc)
428 | : chalk.blue.bold(exit)),
429 | // Returned value
430 | !(exit >= 0) ? chalk.red.bold(value) : chalk.green.bold(value),
431 | // Elapsed time
432 | chalk.cyan.bold('<' + time + '>')
433 | );
434 | }
435 | });
436 | }
437 |
438 | module.exports = function () {
439 | log('[' + spawn().pid + '] Trace on: ' + chalk.magenta.bold(
440 | program.cmd ? program.cmd : ' attach to process ' + program.pid
441 | ));
442 | }
443 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ctrace",
3 | "version": "1.1.5",
4 | "description": "well-formatted and improved trace system calls and signals (when the debugger does not help)",
5 | "main": "./index.js",
6 | "repository": {
7 | "type": "git",
8 | "url": "git@github.com:automation-stack/ctrace.git"
9 | },
10 | "keywords": [
11 | "debug",
12 | "debugger",
13 | "trace",
14 | "dtrace",
15 | "dtruss",
16 | "strace",
17 | "syscall",
18 | "system call",
19 | "benchmark",
20 | "performance",
21 | "kernel",
22 | "well-formatted",
23 | "colored output",
24 | "troubleshooting"
25 | ],
26 | "bin": {
27 | "ctrace": "./bin/ctrace"
28 | },
29 | "scripts": {
30 | "test": "echo \"Error: no test specified\" && exit 1"
31 | },
32 | "author": "Aleksandr Komlev ",
33 | "license": "MIT",
34 | "dependencies": {
35 | "chalk": "^1.1.3",
36 | "columnify": "^1.5.4",
37 | "commander": "^2.9.0",
38 | "lodash": "^4.11.2"
39 | }
40 | }
41 |
--------------------------------------------------------------------------------