News for hackers. Stuff that matters.
Re:Windows X86-64 System Call Table by Kipters on Monday September 02, 2019 @05:55AM (#20857958)
WSL1 also uses that functionality
Re:Windows X86-64 System Call Table by mehrdadn on Monday September 02, 2019 @06:46AM (#20858185)
Huh? WSL1 doesn't use NTDLL, it implements its own stuff.
Re:Windows X86-64 System Call Table by jart on Monday September 02, 2019 @08:31AM (#20858667)
Let's consider looking at this in terms of data structures, and ignoring the APIs. Your CPU has this:

    register char (*(*(*(*ram)[512])[512])[512])[4096] asm(cr3)
Your CPU resolves every pointer memory access through those tables under the hood. It's an extremely powerful data structure. It can let you allocate linear memory like a central banker prints money. But if you're a Windows user, then only Microsoft is authorized to access it, and they don't want you having the central banker privileges that are needed in order to implement fork(). That's the way the cookie crumbles.
Re:Windows X86-64 System Call Table by mehrdadn on Monday September 02, 2019 @08:44AM (#20858736)
It seems you replied to the wrong comment?
Re:Windows X86-64 System Call Table by Kipters on Monday September 02, 2019 @08:30AM (#20858662)
I wasn't specifically talking about any ntdll call, but in one of their "deep dive" videos on Channel 9 they state WSL1 supports fork() because the NT kernel natively supports it, it just isn't exposed on the normal API surface
Re:Windows X86-64 System Call Table by jart on Monday September 02, 2019 @08:57AM (#20858819)
Pretty much all CPUs with MMUs since MULTICS inherently support fork(). So for NT it's a question of prohibiting the behavior. Microsoft's research department even writes papers about how they disagree with fork(). I was truly impressed by the work they did implementing Linux ABI in the NT executive for WSL 1.0. Big change in policy. It's going to be sad to watch it go, but might be for the best. A really well-written ghetto for Linux code is still a ghetto.
Re:Windows X86-64 System Call Table by asveikau on Tuesday September 03, 2019 @05:26PM (#20871361)
This is a weird statement. The MMU doesn't natively do a fork(). The kernel needs to implement the copy-on-write-fault. I.e. all pages marked read only and the write fault handler needs to realize a given address is COW and perform a lazy copy.
Re:Windows X86-64 System Call Table by mehrdadn on Monday September 02, 2019 @08:40AM (#20858713)
I think you got confused. The "native layer" referred to NTDLL in the comment you replied to. I think(?) that's what the earlier POSIX subsystem was built on. That's why I said WSL doesn't use that.