mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-07-08 20:28:30 +00:00
Get fork() working on Windows
This is done without using Microsoft's internal APIs. MAP_PRIVATE mappings are copied to the subprocess via a pipe, since Microsoft doesn't want us to have proper COW pages. MAP_SHARED mappings are remapped without needing to do any copying. Global variables need copying along with the stack and the whole heap of anonymous mem. This actually improves the reliability of the redbean http server although one shouldn't expect 10k+ connections on a home computer that isn't running software built to serve like Linux or FreeBSD.
This commit is contained in:
parent
aea89fe832
commit
db33973e0a
105 changed files with 1476 additions and 912 deletions
|
@ -1,5 +1,7 @@
|
|||
#ifndef COSMOPOLITAN_LIBC_NT_EVENTS_H_
|
||||
#define COSMOPOLITAN_LIBC_NT_EVENTS_H_
|
||||
#include "libc/nt/struct/msg.h"
|
||||
#include "libc/nt/struct/point.h"
|
||||
#if 0
|
||||
/* ░░░░
|
||||
▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
|
||||
|
@ -27,64 +29,61 @@
|
|||
╚────────────────────────────────────────────────────────────────────────────│*/
|
||||
#endif
|
||||
|
||||
#define NT_EVENT_SYSTEM_SOUND 0x0001
|
||||
#define NT_EVENT_SYSTEM_ALERT 0x0002
|
||||
#define NT_EVENT_SYSTEM_FOREGROUND 0x0003
|
||||
#define NT_EVENT_SYSTEM_MENUSTART 0x0004
|
||||
#define NT_EVENT_SYSTEM_MENUEND 0x0005
|
||||
#define NT_EVENT_SYSTEM_MENUPOPUPSTART 0x0006
|
||||
#define NT_EVENT_SYSTEM_MENUPOPUPEND 0x0007
|
||||
#define NT_EVENT_SYSTEM_CAPTURESTART 0x0008
|
||||
#define NT_EVENT_SYSTEM_CAPTUREEND 0x0009
|
||||
#define NT_EVENT_SYSTEM_MOVESIZESTART 0x000A
|
||||
#define NT_EVENT_SYSTEM_MOVESIZEEND 0x000B
|
||||
#define NT_EVENT_SYSTEM_SOUND 0x0001
|
||||
#define NT_EVENT_SYSTEM_ALERT 0x0002
|
||||
#define NT_EVENT_SYSTEM_FOREGROUND 0x0003
|
||||
#define NT_EVENT_SYSTEM_MENUSTART 0x0004
|
||||
#define NT_EVENT_SYSTEM_MENUEND 0x0005
|
||||
#define NT_EVENT_SYSTEM_MENUPOPUPSTART 0x0006
|
||||
#define NT_EVENT_SYSTEM_MENUPOPUPEND 0x0007
|
||||
#define NT_EVENT_SYSTEM_CAPTURESTART 0x0008
|
||||
#define NT_EVENT_SYSTEM_CAPTUREEND 0x0009
|
||||
#define NT_EVENT_SYSTEM_MOVESIZESTART 0x000A
|
||||
#define NT_EVENT_SYSTEM_MOVESIZEEND 0x000B
|
||||
#define NT_EVENT_SYSTEM_CONTEXTHELPSTART 0x000C
|
||||
#define NT_EVENT_SYSTEM_CONTEXTHELPEND 0x000D
|
||||
#define NT_EVENT_SYSTEM_DRAGDROPSTART 0x000E
|
||||
#define NT_EVENT_SYSTEM_DRAGDROPEND 0x000F
|
||||
#define NT_EVENT_SYSTEM_DIALOGSTART 0x0010
|
||||
#define NT_EVENT_SYSTEM_DIALOGEND 0x0011
|
||||
#define NT_EVENT_SYSTEM_SCROLLINGSTART 0x0012
|
||||
#define NT_EVENT_SYSTEM_SCROLLINGEND 0x0013
|
||||
#define NT_EVENT_SYSTEM_SWITCHSTART 0x0014
|
||||
#define NT_EVENT_SYSTEM_SWITCHEND 0x0015
|
||||
#define NT_EVENT_SYSTEM_MINIMIZESTART 0x0016
|
||||
#define NT_EVENT_SYSTEM_MINIMIZEEND 0x0017
|
||||
#define NT_EVENT_SYSTEM_CONTEXTHELPEND 0x000D
|
||||
#define NT_EVENT_SYSTEM_DRAGDROPSTART 0x000E
|
||||
#define NT_EVENT_SYSTEM_DRAGDROPEND 0x000F
|
||||
#define NT_EVENT_SYSTEM_DIALOGSTART 0x0010
|
||||
#define NT_EVENT_SYSTEM_DIALOGEND 0x0011
|
||||
#define NT_EVENT_SYSTEM_SCROLLINGSTART 0x0012
|
||||
#define NT_EVENT_SYSTEM_SCROLLINGEND 0x0013
|
||||
#define NT_EVENT_SYSTEM_SWITCHSTART 0x0014
|
||||
#define NT_EVENT_SYSTEM_SWITCHEND 0x0015
|
||||
#define NT_EVENT_SYSTEM_MINIMIZESTART 0x0016
|
||||
#define NT_EVENT_SYSTEM_MINIMIZEEND 0x0017
|
||||
|
||||
#define NT_EVENT_CONSOLE_CARET 0x4001
|
||||
#define NT_EVENT_CONSOLE_UPDATE_REGION 0x4002
|
||||
#define NT_EVENT_CONSOLE_UPDATE_SIMPLE 0x4003
|
||||
#define NT_EVENT_CONSOLE_UPDATE_SCROLL 0x4004
|
||||
#define NT_EVENT_CONSOLE_LAYOUT 0x4005
|
||||
#define NT_EVENT_CONSOLE_CARET 0x4001
|
||||
#define NT_EVENT_CONSOLE_UPDATE_REGION 0x4002
|
||||
#define NT_EVENT_CONSOLE_UPDATE_SIMPLE 0x4003
|
||||
#define NT_EVENT_CONSOLE_UPDATE_SCROLL 0x4004
|
||||
#define NT_EVENT_CONSOLE_LAYOUT 0x4005
|
||||
#define NT_EVENT_CONSOLE_START_APPLICATION 0x4006
|
||||
#define NT_EVENT_CONSOLE_END_APPLICATION 0x4007
|
||||
#define NT_EVENT_CONSOLE_END_APPLICATION 0x4007
|
||||
|
||||
#define NT_EVENT_OBJECT_CREATE 0x8000
|
||||
#define NT_EVENT_OBJECT_DESTROY 0x8001
|
||||
#define NT_EVENT_OBJECT_SHOW 0x8002
|
||||
#define NT_EVENT_OBJECT_HIDE 0x8003
|
||||
#define NT_EVENT_OBJECT_REORDER 0x8004
|
||||
#define NT_EVENT_OBJECT_FOCUS 0x8005
|
||||
#define NT_EVENT_OBJECT_SELECTION 0x8006
|
||||
#define NT_EVENT_OBJECT_SELECTIONADD 0x8007
|
||||
#define NT_EVENT_OBJECT_SELECTIONREMOVE 0x8008
|
||||
#define NT_EVENT_OBJECT_SELECTIONWITHIN 0x8009
|
||||
#define NT_EVENT_OBJECT_STATECHANGE 0x800A
|
||||
#define NT_EVENT_OBJECT_LOCATIONCHANGE 0x800B
|
||||
#define NT_EVENT_OBJECT_NAMECHANGE 0x800C
|
||||
#define NT_EVENT_OBJECT_CREATE 0x8000
|
||||
#define NT_EVENT_OBJECT_DESTROY 0x8001
|
||||
#define NT_EVENT_OBJECT_SHOW 0x8002
|
||||
#define NT_EVENT_OBJECT_HIDE 0x8003
|
||||
#define NT_EVENT_OBJECT_REORDER 0x8004
|
||||
#define NT_EVENT_OBJECT_FOCUS 0x8005
|
||||
#define NT_EVENT_OBJECT_SELECTION 0x8006
|
||||
#define NT_EVENT_OBJECT_SELECTIONADD 0x8007
|
||||
#define NT_EVENT_OBJECT_SELECTIONREMOVE 0x8008
|
||||
#define NT_EVENT_OBJECT_SELECTIONWITHIN 0x8009
|
||||
#define NT_EVENT_OBJECT_STATECHANGE 0x800A
|
||||
#define NT_EVENT_OBJECT_LOCATIONCHANGE 0x800B
|
||||
#define NT_EVENT_OBJECT_NAMECHANGE 0x800C
|
||||
#define NT_EVENT_OBJECT_DESCRIPTIONCHANGE 0x800D
|
||||
#define NT_EVENT_OBJECT_VALUECHANGE 0x800E
|
||||
#define NT_EVENT_OBJECT_PARENTCHANGE 0x800F
|
||||
#define NT_EVENT_OBJECT_HELPCHANGE 0x8010
|
||||
#define NT_EVENT_OBJECT_DEFACTIONCHANGE 0x8011
|
||||
#define NT_EVENT_OBJECT_VALUECHANGE 0x800E
|
||||
#define NT_EVENT_OBJECT_PARENTCHANGE 0x800F
|
||||
#define NT_EVENT_OBJECT_HELPCHANGE 0x8010
|
||||
#define NT_EVENT_OBJECT_DEFACTIONCHANGE 0x8011
|
||||
#define NT_EVENT_OBJECT_ACCELERATORCHANGE 0x8012
|
||||
|
||||
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
||||
COSMOPOLITAN_C_START_
|
||||
|
||||
struct NtMsg;
|
||||
struct NtPoint;
|
||||
|
||||
int32_t GetMessage(struct NtMsg *lpMsg, int64_t hWnd, uint32_t wMsgFilterMin,
|
||||
uint32_t wMsgFilterMax);
|
||||
int32_t TranslateMessage(const struct NtMsg *lpMsg);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue