├── .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 | --------------------------------------------------------------------------------