@@ -35,84 +35,16 @@ use std::io;
35
35
use std:: mem;
36
36
use std:: ptr;
37
37
38
- type HANDLE = * mut u8 ;
39
- type BOOL = i32 ;
40
- type DWORD = u32 ;
41
- type LPHANDLE = * mut HANDLE ;
42
- type LPVOID = * mut u8 ;
43
- type JOBOBJECTINFOCLASS = i32 ;
44
- type SIZE_T = usize ;
45
- type LARGE_INTEGER = i64 ;
46
- type UINT = u32 ;
47
- type ULONG_PTR = usize ;
48
- type ULONGLONG = u64 ;
49
-
50
- const FALSE : BOOL = 0 ;
51
- const DUPLICATE_SAME_ACCESS : DWORD = 0x2 ;
52
- const PROCESS_DUP_HANDLE : DWORD = 0x40 ;
53
- const JobObjectExtendedLimitInformation : JOBOBJECTINFOCLASS = 9 ;
54
- const JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE : DWORD = 0x2000 ;
55
- const JOB_OBJECT_LIMIT_PRIORITY_CLASS : DWORD = 0x00000020 ;
56
- const SEM_FAILCRITICALERRORS : UINT = 0x0001 ;
57
- const SEM_NOGPFAULTERRORBOX : UINT = 0x0002 ;
58
- const BELOW_NORMAL_PRIORITY_CLASS : DWORD = 0x00004000 ;
59
-
60
- extern "system" {
61
- fn CreateJobObjectW ( lpJobAttributes : * mut u8 , lpName : * const u8 ) -> HANDLE ;
62
- fn CloseHandle ( hObject : HANDLE ) -> BOOL ;
63
- fn GetCurrentProcess ( ) -> HANDLE ;
64
- fn OpenProcess ( dwDesiredAccess : DWORD , bInheritHandle : BOOL , dwProcessId : DWORD ) -> HANDLE ;
65
- fn DuplicateHandle (
66
- hSourceProcessHandle : HANDLE ,
67
- hSourceHandle : HANDLE ,
68
- hTargetProcessHandle : HANDLE ,
69
- lpTargetHandle : LPHANDLE ,
70
- dwDesiredAccess : DWORD ,
71
- bInheritHandle : BOOL ,
72
- dwOptions : DWORD ,
73
- ) -> BOOL ;
74
- fn AssignProcessToJobObject ( hJob : HANDLE , hProcess : HANDLE ) -> BOOL ;
75
- fn SetInformationJobObject (
76
- hJob : HANDLE ,
77
- JobObjectInformationClass : JOBOBJECTINFOCLASS ,
78
- lpJobObjectInformation : LPVOID ,
79
- cbJobObjectInformationLength : DWORD ,
80
- ) -> BOOL ;
81
- fn SetErrorMode ( mode : UINT ) -> UINT ;
82
- }
83
-
84
- #[ repr( C ) ]
85
- struct JOBOBJECT_EXTENDED_LIMIT_INFORMATION {
86
- BasicLimitInformation : JOBOBJECT_BASIC_LIMIT_INFORMATION ,
87
- IoInfo : IO_COUNTERS ,
88
- ProcessMemoryLimit : SIZE_T ,
89
- JobMemoryLimit : SIZE_T ,
90
- PeakProcessMemoryUsed : SIZE_T ,
91
- PeakJobMemoryUsed : SIZE_T ,
92
- }
93
-
94
- #[ repr( C ) ]
95
- struct IO_COUNTERS {
96
- ReadOperationCount : ULONGLONG ,
97
- WriteOperationCount : ULONGLONG ,
98
- OtherOperationCount : ULONGLONG ,
99
- ReadTransferCount : ULONGLONG ,
100
- WriteTransferCount : ULONGLONG ,
101
- OtherTransferCount : ULONGLONG ,
102
- }
103
-
104
- #[ repr( C ) ]
105
- struct JOBOBJECT_BASIC_LIMIT_INFORMATION {
106
- PerProcessUserTimeLimit : LARGE_INTEGER ,
107
- PerJobUserTimeLimit : LARGE_INTEGER ,
108
- LimitFlags : DWORD ,
109
- MinimumWorkingsetSize : SIZE_T ,
110
- MaximumWorkingsetSize : SIZE_T ,
111
- ActiveProcessLimit : DWORD ,
112
- Affinity : ULONG_PTR ,
113
- PriorityClass : DWORD ,
114
- SchedulingClass : DWORD ,
115
- }
38
+ use winapi:: shared:: minwindef:: { DWORD , FALSE , LPVOID } ;
39
+ use winapi:: um:: errhandlingapi:: SetErrorMode ;
40
+ use winapi:: um:: handleapi:: { CloseHandle , DuplicateHandle } ;
41
+ use winapi:: um:: jobapi2:: { AssignProcessToJobObject , CreateJobObjectW , SetInformationJobObject } ;
42
+ use winapi:: um:: processthreadsapi:: { GetCurrentProcess , OpenProcess } ;
43
+ use winapi:: um:: winbase:: { BELOW_NORMAL_PRIORITY_CLASS , SEM_NOGPFAULTERRORBOX } ;
44
+ use winapi:: um:: winnt:: {
45
+ JobObjectExtendedLimitInformation , DUPLICATE_SAME_ACCESS , JOBOBJECT_EXTENDED_LIMIT_INFORMATION ,
46
+ JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE , JOB_OBJECT_LIMIT_PRIORITY_CLASS , PROCESS_DUP_HANDLE ,
47
+ } ;
116
48
117
49
pub unsafe fn setup ( build : & mut Build ) {
118
50
// Enable the Windows Error Reporting dialog which msys disables,
0 commit comments