[HN Gopher] Searchable Linux Syscall Table for x86 and x86_64 ___________________________________________________________________ Searchable Linux Syscall Table for x86 and x86_64 Author : ingve Score : 26 points Date : 2023-04-14 20:23 UTC (2 hours ago) (HTM) web link (filippo.io) (TXT) w3m dump (filippo.io) | matheusmoreira wrote: | I've used this list many times, thanks. The header file with the | definitions that get exported to user space is here: | | https://github.com/torvalds/linux/blob/master/include/uapi/a... | sickall wrote: | That depends on your architecture, on x86_64 it's generated | from this file: | https://github.com/torvalds/linux/blob/master/arch/x86/entry... | sickall wrote: | This is way out of date, by nearly a decade - it's missing | everything from at least v3.14 onwards, possibly earlier. And | some of the source files it references have been moved around and | refactored too. | hmry wrote: | I've been using this website for _years_ (since it 's one of the | top results on Google) and it has _always_ said "32-bit coming | soon". I have given up on it actually ever coming. Not sure why | it even includes x86 in the title besides SEO manipulation at | this point | MuffinFlavored wrote: | what would it take to implement user mode linux (where syscalls | are... stubbed from what I can tell? no... that's not right. | where hardware is virtualized/mocked? i don't know the right | terminology) for something like Mac OS X (arm64/aarch64) so that | Mac users could benefit from "containerization" in a hipster way | pcwalton wrote: | The Linux kernel API is so complex, and so ill-specified, that | the only practical way that would maintain userspace | compatibility would be to run the Linux kernel itself under | macOS. (Microsoft tried to implement the Linux API in NT with | WSL 1 and they abandoned that approach in WSL 2 because, among | other reasons, it was just too much work to achieve Linux | compatibility.) Running the Linux kernel under macOS can be | done with Apple's hypervisor framework. | MuffinFlavored wrote: | > would be to run the Linux kernel itself under macOS. | | is that not "user mode linux"? | simcop2387 wrote: | Not quite, UML is the linux kernel ported to be an | executable that runs under Linux. It's design kind of | requires the system calls from Linux to be able to run | properly. Making a translation layer for that isn't | impossible but it would add more overhead to running things | that way. Running a VM in a hypervisor, you're instead | creating a whole virtual computer and its IO interfaces | instead of at the system call level. Because there's | hardware support for doing that virtualization (basically | the CPU can help isolate the new process so that it can't | see real hardware and the hypervisor gets notified/pulled | in when needed to emulate the IO) it can end up nearly | native speed if setup correctly. | MuffinFlavored wrote: | > Not quite, UML is the linux kernel ported to be an | executable that runs under Linux. It's design kind of | requires the system calls from Linux to be able to run | properly. | | How large of an effort would it be to make it work on | Mac? Monstrous? Not that bad? 100 hours? 1000 hours? For | what payoff? | simcop2387 wrote: | I believe this is actually one of the ways that Docker | actually implements things for their MacOS support, so it's | already done for containerization type stuff. Though I don't | believe that docker gives you any real access to the "host" | that is sets up for doing this. | | https://docs.docker.com/desktop/faqs/macfaqs/ | mirashii wrote: | > they abandoned that approach in WSL 2 because, among other | reasons, it was just too much work to achieve Linux | compatibility | | Any particular citation for this claim? I tried to do some | searching and couldn't find anything definitive, but my | memory from contemporaneous conversations and articles | suggests that the primary reason was really performance, | since the differences in how filesystem access in particular | work between Windows/Linux were such that some of the I/O | bottlenecks were deemed too difficult to impossible to | address. | | Certainly WSL2 has higher compatibility, but I'm not sure | that compatibility and not performance was the primary | driver, and would love a source if you have one. | | Relatedly, it's worth noting that a number of other platforms | have developed and shipped syscall translation layers for | Linux binaries, including FreeBSD and SmartOS/illumos. | twoodfin wrote: | Isn't this what the Illumos folks did (tried to do?) with LX- | branded zones? | matheusmoreira wrote: | QEMU has this feature. It can run Linux programs by translating | their system calls. | | https://www.qemu.org/docs/master/user/main.html | simcop2387 wrote: | You probably want to take a look at gVisor[1], there's some | desire for it to work on other systems like macos[2]. It | doesn't have a working solution there yet but it's probably the | easiest way to make something like Microsoft's WSL1 which | handled things that way. You'll get a lot of the boiler plate | out of the way that you'd need to pretend to be a Linux system, | and just have to implement the translations to MacOS calls | through some kind of library. From the looks of the github | thread it seems the main issue to doing it is cgroup support | since there isn't anything similar to it on the other side. | | [1] https://en.wikipedia.org/wiki/GVisor [2] | https://github.com/google/gvisor/issues/1270 | jcranmer wrote: | FreeBSD has a syscall compatibility layer for Linux: | https://wiki.freebsd.org/Linuxulator. As noted by other people, | Windows used to have such a compatibility layer as well, but | they've moved away from it newer versions. | jcranmer wrote: | It seems that the newest syscall it has listed (finit_module) is | from Linux 3.8, and the oldest syscall that is not listed | (sched_setattr) is from Linux 3.14, which makes this a | surprisingly old list. | slabity wrote: | Does anyone know if there are any similar lists for the huge | number of `ioctls` that are available across different devices? I | would absolutely love to have a table of those, including the | device types and the structures that get passed along with it. It | would make creating interfaces for different languages far | easier. | sickall wrote: | There's a pretty decent set of autogenerated lists present in | the strace source, see e.g. | https://github.com/strace/strace/blob/master/src/linux/64/io... | nandkeypull wrote: | For my syscall lookup needs, I prefer https://x64.syscall.sh/. | It's more up to date and also supports x86, arm, and aarch64. | | pwn constgrep also works in a pinch: | https://docs.pwntools.com/en/stable/commandline.html#pwn-con... ___________________________________________________________________ (page generated 2023-04-14 23:00 UTC)