Index: runtime/bin/process_win.cc |
diff --git a/runtime/bin/process_win.cc b/runtime/bin/process_win.cc |
index c3737877cceeda14cf0868fbe73c5db73eb0b664..a2d93a4babcc9bc74f89fbd23f01bc6c32cd07a9 100644 |
--- a/runtime/bin/process_win.cc |
+++ b/runtime/bin/process_win.cc |
@@ -45,7 +45,7 @@ class ProcessInfo { |
: process_id_(process_id), |
process_handle_(process_handle), |
wait_handle_(wait_handle), |
- exit_pipe_(exit_pipe) { } |
+ exit_pipe_(exit_pipe) {} |
~ProcessInfo() { |
BOOL success = CloseHandle(process_handle_); |
@@ -94,12 +94,8 @@ class ProcessInfoList { |
MutexLocker locker(mutex_); |
HANDLE wait_handle = INVALID_HANDLE_VALUE; |
BOOL success = RegisterWaitForSingleObject( |
- &wait_handle, |
- handle, |
- &ExitCodeCallback, |
- reinterpret_cast<void*>(pid), |
- INFINITE, |
- WT_EXECUTEONLYONCE); |
+ &wait_handle, handle, &ExitCodeCallback, reinterpret_cast<void*>(pid), |
+ INFINITE, WT_EXECUTEONLYONCE); |
if (!success) { |
FATAL("Failed to register exit code wait operation."); |
} |
@@ -177,7 +173,7 @@ class ProcessInfoList { |
exit_code = abs(exit_code); |
negative = 1; |
} |
- int message[2] = { exit_code, negative }; |
+ int message[2] = {exit_code, negative}; |
DWORD written; |
ok = WriteFile(exit_pipe, message, sizeof(message), &written, NULL); |
// If the process has been closed, the read end of the exit |
@@ -210,11 +206,7 @@ Mutex* ProcessInfoList::mutex_ = new Mutex(); |
// Types of pipes to create. |
-enum NamedPipeType { |
- kInheritRead, |
- kInheritWrite, |
- kInheritNone |
-}; |
+enum NamedPipeType { kInheritRead, kInheritWrite, kInheritNone }; |
// Create a pipe for communicating with a new process. The handles array |
@@ -233,13 +225,12 @@ static bool CreateProcessPipe(HANDLE handles[2], |
if (type == kInheritRead) { |
handles[kWriteHandle] = |
- CreateNamedPipeW(pipe_name, |
- PIPE_ACCESS_OUTBOUND | FILE_FLAG_OVERLAPPED, |
+ CreateNamedPipeW(pipe_name, PIPE_ACCESS_OUTBOUND | FILE_FLAG_OVERLAPPED, |
PIPE_TYPE_BYTE | PIPE_WAIT, |
- 1, // Number of pipes |
- 1024, // Out buffer size |
- 1024, // In buffer size |
- 0, // Timeout in ms |
+ 1, // Number of pipes |
+ 1024, // Out buffer size |
+ 1024, // In buffer size |
+ 0, // Timeout in ms |
NULL); |
if (handles[kWriteHandle] == INVALID_HANDLE_VALUE) { |
@@ -248,13 +239,8 @@ static bool CreateProcessPipe(HANDLE handles[2], |
} |
handles[kReadHandle] = |
- CreateFileW(pipe_name, |
- GENERIC_READ, |
- 0, |
- &inherit_handle, |
- OPEN_EXISTING, |
- FILE_READ_ATTRIBUTES | FILE_FLAG_OVERLAPPED, |
- NULL); |
+ CreateFileW(pipe_name, GENERIC_READ, 0, &inherit_handle, OPEN_EXISTING, |
+ FILE_READ_ATTRIBUTES | FILE_FLAG_OVERLAPPED, NULL); |
if (handles[kReadHandle] == INVALID_HANDLE_VALUE) { |
Log::PrintErr("CreateFile failed %d\n", GetLastError()); |
return false; |
@@ -262,13 +248,12 @@ static bool CreateProcessPipe(HANDLE handles[2], |
} else { |
ASSERT((type == kInheritWrite) || (type == kInheritNone)); |
handles[kReadHandle] = |
- CreateNamedPipeW(pipe_name, |
- PIPE_ACCESS_INBOUND | FILE_FLAG_OVERLAPPED, |
+ CreateNamedPipeW(pipe_name, PIPE_ACCESS_INBOUND | FILE_FLAG_OVERLAPPED, |
PIPE_TYPE_BYTE | PIPE_WAIT, |
- 1, // Number of pipes |
- 1024, // Out buffer size |
- 1024, // In buffer size |
- 0, // Timeout in ms |
+ 1, // Number of pipes |
+ 1024, // Out buffer size |
+ 1024, // In buffer size |
+ 0, // Timeout in ms |
NULL); |
if (handles[kReadHandle] == INVALID_HANDLE_VALUE) { |
@@ -276,14 +261,10 @@ static bool CreateProcessPipe(HANDLE handles[2], |
return false; |
} |
- handles[kWriteHandle] = |
- CreateFileW(pipe_name, |
- GENERIC_WRITE, |
- 0, |
- (type == kInheritWrite) ? &inherit_handle : NULL, |
- OPEN_EXISTING, |
- FILE_WRITE_ATTRIBUTES | FILE_FLAG_OVERLAPPED, |
- NULL); |
+ handles[kWriteHandle] = CreateFileW( |
+ pipe_name, GENERIC_WRITE, 0, |
+ (type == kInheritWrite) ? &inherit_handle : NULL, OPEN_EXISTING, |
+ FILE_WRITE_ATTRIBUTES | FILE_FLAG_OVERLAPPED, NULL); |
if (handles[kWriteHandle] == INVALID_HANDLE_VALUE) { |
Log::PrintErr("CreateFile failed %d\n", GetLastError()); |
return false; |
@@ -332,13 +313,8 @@ static HANDLE OpenNul() { |
inherit_handle.nLength = sizeof(SECURITY_ATTRIBUTES); |
inherit_handle.bInheritHandle = TRUE; |
inherit_handle.lpSecurityDescriptor = NULL; |
- HANDLE nul = CreateFile(L"NUL", |
- GENERIC_READ | GENERIC_WRITE, |
- 0, |
- &inherit_handle, |
- OPEN_EXISTING, |
- 0, |
- NULL); |
+ HANDLE nul = CreateFile(L"NUL", GENERIC_READ | GENERIC_WRITE, 0, |
+ &inherit_handle, OPEN_EXISTING, 0, NULL); |
if (nul == INVALID_HANDLE_VALUE) { |
Log::PrintErr("CloseHandle failed %d\n", GetLastError()); |
} |
@@ -346,15 +322,20 @@ static HANDLE OpenNul() { |
} |
-typedef BOOL (WINAPI *InitProcThreadAttrListFn)( |
- LPPROC_THREAD_ATTRIBUTE_LIST, DWORD, DWORD, PSIZE_T); |
+typedef BOOL(WINAPI* InitProcThreadAttrListFn)(LPPROC_THREAD_ATTRIBUTE_LIST, |
+ DWORD, |
+ DWORD, |
+ PSIZE_T); |
-typedef BOOL (WINAPI *UpdateProcThreadAttrFn)( |
- LPPROC_THREAD_ATTRIBUTE_LIST, DWORD, DWORD_PTR, |
- PVOID, SIZE_T, PVOID, PSIZE_T); |
+typedef BOOL(WINAPI* UpdateProcThreadAttrFn)(LPPROC_THREAD_ATTRIBUTE_LIST, |
+ DWORD, |
+ DWORD_PTR, |
+ PVOID, |
+ SIZE_T, |
+ PVOID, |
+ PSIZE_T); |
-typedef VOID (WINAPI *DeleteProcThreadAttrListFn)( |
- LPPROC_THREAD_ATTRIBUTE_LIST); |
+typedef VOID(WINAPI* DeleteProcThreadAttrListFn)(LPPROC_THREAD_ATTRIBUTE_LIST); |
static InitProcThreadAttrListFn init_proc_thread_attr_list = NULL; |
@@ -385,7 +366,7 @@ static bool EnsureInitialized() { |
const int kMaxPipeNameSize = 80; |
-template<int Count> |
+template <int Count> |
static int GenerateNames(wchar_t pipe_names[Count][kMaxPipeNameSize]) { |
UUID uuid; |
RPC_STATUS status = UuidCreateSequential(&uuid); |
@@ -399,9 +380,8 @@ static int GenerateNames(wchar_t pipe_names[Count][kMaxPipeNameSize]) { |
} |
for (int i = 0; i < Count; i++) { |
static const wchar_t* prefix = L"\\\\.\\Pipe\\dart"; |
- _snwprintf(pipe_names[i], |
- kMaxPipeNameSize, |
- L"%s_%s_%d", prefix, uuid_string, i + 1); |
+ _snwprintf(pipe_names[i], kMaxPipeNameSize, L"%s_%s_%d", prefix, |
+ uuid_string, i + 1); |
} |
status = RpcStringFreeW(&uuid_string); |
if (status != RPC_S_OK) { |
@@ -450,7 +430,7 @@ class ProcessStarter { |
system_arguments = reinterpret_cast<wchar_t**>( |
Dart_ScopeAllocate(arguments_length * sizeof(*system_arguments))); |
for (int i = 0; i < arguments_length; i++) { |
- system_arguments[i] = StringUtilsWin::Utf8ToWide(arguments[i]); |
+ system_arguments[i] = StringUtilsWin::Utf8ToWide(arguments[i]); |
} |
// Compute command-line length. |
@@ -462,8 +442,8 @@ class ProcessStarter { |
command_line_length += arguments_length + 1; |
// Put together command-line string. |
- command_line_ = reinterpret_cast<wchar_t*>(Dart_ScopeAllocate( |
- command_line_length * sizeof(*command_line_))); |
+ command_line_ = reinterpret_cast<wchar_t*>( |
+ Dart_ScopeAllocate(command_line_length * sizeof(*command_line_))); |
int len = 0; |
int remaining = command_line_length; |
int written = |
@@ -472,8 +452,8 @@ class ProcessStarter { |
remaining -= written; |
ASSERT(remaining >= 0); |
for (int i = 0; i < arguments_length; i++) { |
- written = _snwprintf( |
- command_line_ + len, remaining, L" %s", system_arguments[i]); |
+ written = _snwprintf(command_line_ + len, remaining, L" %s", |
+ system_arguments[i]); |
len += written; |
remaining -= written; |
ASSERT(remaining >= 0); |
@@ -496,15 +476,13 @@ class ProcessStarter { |
for (intptr_t i = 0; i < environment_length; i++) { |
block_size += wcslen(system_environment[i]) + 1; |
} |
- environment_block_ = reinterpret_cast<wchar_t*>(Dart_ScopeAllocate( |
- block_size * sizeof(*environment_block_))); |
+ environment_block_ = reinterpret_cast<wchar_t*>( |
+ Dart_ScopeAllocate(block_size * sizeof(*environment_block_))); |
intptr_t block_index = 0; |
for (intptr_t i = 0; i < environment_length; i++) { |
intptr_t len = wcslen(system_environment[i]); |
- intptr_t result = _snwprintf(environment_block_ + block_index, |
- len, |
- L"%s", |
- system_environment[i]); |
+ intptr_t result = _snwprintf(environment_block_ + block_index, len, |
+ L"%s", system_environment[i]); |
ASSERT(result == len); |
block_index += len; |
environment_block_[block_index++] = '\0'; |
@@ -565,17 +543,13 @@ class ProcessStarter { |
return CleanupAndReturnError(); |
} |
static const int kNumInheritedHandles = 3; |
- HANDLE inherited_handles[kNumInheritedHandles] = |
- { stdin_handles_[kReadHandle], |
- stdout_handles_[kWriteHandle], |
- stderr_handles_[kWriteHandle] }; |
- if (!update_proc_thread_attr(attribute_list_, |
- 0, |
- PROC_THREAD_ATTRIBUTE_HANDLE_LIST, |
- inherited_handles, |
- kNumInheritedHandles * sizeof(HANDLE), |
- NULL, |
- NULL)) { |
+ HANDLE inherited_handles[kNumInheritedHandles] = { |
+ stdin_handles_[kReadHandle], stdout_handles_[kWriteHandle], |
+ stderr_handles_[kWriteHandle]}; |
+ if (!update_proc_thread_attr( |
+ attribute_list_, 0, PROC_THREAD_ATTRIBUTE_HANDLE_LIST, |
+ inherited_handles, kNumInheritedHandles * sizeof(HANDLE), NULL, |
+ NULL)) { |
return CleanupAndReturnError(); |
} |
startup_info.lpAttributeList = attribute_list_; |
@@ -590,16 +564,14 @@ class ProcessStarter { |
if (mode_ != kNormal) { |
creation_flags |= DETACHED_PROCESS; |
} |
- BOOL result = CreateProcessW(NULL, // ApplicationName |
- command_line_, |
- NULL, // ProcessAttributes |
- NULL, // ThreadAttributes |
- TRUE, // InheritHandles |
- creation_flags, |
- environment_block_, |
- system_working_directory_, |
- reinterpret_cast<STARTUPINFOW*>(&startup_info), |
- &process_info); |
+ BOOL result = CreateProcessW( |
+ NULL, // ApplicationName |
+ command_line_, |
+ NULL, // ProcessAttributes |
+ NULL, // ThreadAttributes |
+ TRUE, // InheritHandles |
+ creation_flags, environment_block_, system_working_directory_, |
+ reinterpret_cast<STARTUPINFOW*>(&startup_info), &process_info); |
if (result == 0) { |
return CleanupAndReturnError(); |
@@ -682,8 +654,8 @@ class ProcessStarter { |
int CleanupAndReturnError() { |
int error_code = SetOsErrorMessage(os_error_message_); |
- CloseProcessPipes( |
- stdin_handles_, stdout_handles_, stderr_handles_, exit_handles_); |
+ CloseProcessPipes(stdin_handles_, stdout_handles_, stderr_handles_, |
+ exit_handles_); |
return error_code; |
} |
@@ -727,26 +699,16 @@ int Process::Start(const char* path, |
intptr_t* id, |
intptr_t* exit_handler, |
char** os_error_message) { |
- ProcessStarter starter(path, |
- arguments, |
- arguments_length, |
- working_directory, |
- environment, |
- environment_length, |
- mode, |
- in, |
- out, |
- err, |
- id, |
- exit_handler, |
- os_error_message); |
+ ProcessStarter starter(path, arguments, arguments_length, working_directory, |
+ environment, environment_length, mode, in, out, err, |
+ id, exit_handler, os_error_message); |
return starter.Start(); |
} |
-class BufferList: public BufferListBase { |
+class BufferList : public BufferListBase { |
public: |
- BufferList() : read_pending_(true) { } |
+ BufferList() : read_pending_(true) {} |
// Indicate that data has been read into the buffer provided to |
// overlapped read. |
@@ -771,9 +733,7 @@ class BufferList: public BufferListBase { |
read_pending_ = true; |
} |
- intptr_t GetDataSize() { |
- return data_size_; |
- } |
+ intptr_t GetDataSize() { return data_size_; } |
uint8_t* GetFirstDataBuffer() { |
ASSERT(head_ != NULL); |
@@ -782,9 +742,7 @@ class BufferList: public BufferListBase { |
return head_->data_; |
} |
- void FreeDataBuffer() { |
- Free(); |
- } |
+ void FreeDataBuffer() { Free(); } |
private: |
bool read_pending_; |
@@ -803,9 +761,7 @@ class OverlappedHandle { |
ClearOverlapped(); |
} |
- bool HasEvent(HANDLE event) { |
- return (event_ == event); |
- } |
+ bool HasEvent(HANDLE event) { return (event_ == event); } |
bool Read() { |
// Get the data read as a result of a completed overlapped operation. |
@@ -829,21 +785,13 @@ class OverlappedHandle { |
} |
} |
- Dart_Handle GetData() { |
- return buffer_.GetData(); |
- } |
+ Dart_Handle GetData() { return buffer_.GetData(); } |
- intptr_t GetDataSize() { |
- return buffer_.GetDataSize(); |
- } |
+ intptr_t GetDataSize() { return buffer_.GetDataSize(); } |
- uint8_t* GetFirstDataBuffer() { |
- return buffer_.GetFirstDataBuffer(); |
- } |
+ uint8_t* GetFirstDataBuffer() { return buffer_.GetFirstDataBuffer(); } |
- void FreeDataBuffer() { |
- return buffer_.FreeDataBuffer(); |
- } |
+ void FreeDataBuffer() { return buffer_.FreeDataBuffer(); } |
void Close() { |
CloseHandle(handle_); |
@@ -956,10 +904,8 @@ bool Process::Kill(intptr_t id, int signal) { |
HANDLE wait_handle; |
HANDLE exit_pipe; |
// First check the process info list for the process to get a handle to it. |
- bool success = ProcessInfoList::LookupProcess(id, |
- &process_handle, |
- &wait_handle, |
- &exit_pipe); |
+ bool success = ProcessInfoList::LookupProcess(id, &process_handle, |
+ &wait_handle, &exit_pipe); |
// For detached processes we don't have the process registered in the |
// process info list. Try to look it up through the OS. |
if (!success) { |
@@ -1011,8 +957,10 @@ BOOL WINAPI SignalHandler(DWORD signal) { |
intptr_t GetWinSignal(intptr_t signal) { |
switch (signal) { |
- case kSighup: return CTRL_CLOSE_EVENT; |
- case kSigint: return CTRL_C_EVENT; |
+ case kSighup: |
+ return CTRL_CLOSE_EVENT; |
+ case kSigint: |
+ return CTRL_C_EVENT; |
default: |
return -1; |
} |