[llvm-commits] [llvm] r81247 - in /llvm/trunk: include/llvm/System/Program.h lib/System/Unix/Program.inc lib/System/Win32/Program.inc
Sandeep Patel
deeppatel1987 at gmail.com
Wed Sep 9 16:47:19 PDT 2009
This breaks i686-pc-mingw32 builds.
GetProcessId() is only available in the MinGW winbase.h #if
(_WIN32_WINNT >= 0x0501) and lib/System/Win32/Win32.h has #define
_WIN32_WINNT 0x0500.
deep
On Tue, Sep 8, 2009 at 7:50 PM, Mikhail Glushenkov<foldr at codedgers.com> wrote:
> Author: foldr
> Date: Tue Sep 8 14:50:55 2009
> New Revision: 81247
>
> URL: http://llvm.org/viewvc/llvm-project?rev=81247&view=rev
> Log:
> Get rid of the Pid_ member in the Program class.
>
> Modified:
> llvm/trunk/include/llvm/System/Program.h
> llvm/trunk/lib/System/Unix/Program.inc
> llvm/trunk/lib/System/Win32/Program.inc
>
> Modified: llvm/trunk/include/llvm/System/Program.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/System/Program.h?rev=81247&r1=81246&r2=81247&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/System/Program.h (original)
> +++ llvm/trunk/include/llvm/System/Program.h Tue Sep 8 14:50:55 2009
> @@ -30,9 +30,7 @@
> /// @brief An abstraction for finding and executing programs.
> class Program {
> /// Opaque handle for target specific data.
> - void *Data;
> -
> - unsigned Pid_;
> + void *Data_;
>
> // Noncopyable.
> Program(const Program& other);
> @@ -46,7 +44,7 @@
> ~Program();
>
> /// Return process ID of this program.
> - unsigned GetPid() { return Pid_; }
> + unsigned GetPid();
>
> /// This function executes the program using the \p arguments provided. The
> /// invoked program will inherit the stdin, stdout, and stderr file
>
> Modified: llvm/trunk/lib/System/Unix/Program.inc
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/System/Unix/Program.inc?rev=81247&r1=81246&r2=81247&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/System/Unix/Program.inc (original)
> +++ llvm/trunk/lib/System/Unix/Program.inc Tue Sep 8 14:50:55 2009
> @@ -34,10 +34,14 @@
> namespace llvm {
> using namespace sys;
>
> -Program::Program() : Pid_(0) {}
> +Program::Program() : Data_(0) {}
>
> Program::~Program() {}
>
> +unsigned Program::GetPid() {
> + return reinterpret_cast<unsigned>(Data_);
> +}
> +
> // This function just uses the PATH environment variable to find the program.
> Path
> Program::FindProgramByName(const std::string& progName) {
> @@ -209,7 +213,7 @@
> break;
> }
>
> - Pid_ = child;
> + Data_ = reinterpret_cast<void*>(child);
>
> return true;
> }
> @@ -221,7 +225,7 @@
> #ifdef HAVE_SYS_WAIT_H
> struct sigaction Act, Old;
>
> - if (Pid_ == 0) {
> + if (Data_ == 0) {
> MakeErrMsg(ErrMsg, "Process not started!");
> return -1;
> }
> @@ -237,7 +241,7 @@
>
> // Parent process: Wait for the child process to terminate.
> int status;
> - int child = this->Pid_;
> + pid_t child = reinterpret_cast<pid_t>(Data_);
> while (wait(&status) != child)
> if (secondsToWait && errno == EINTR) {
> // Kill the child.
> @@ -285,12 +289,13 @@
>
> bool
> Program::Kill(std::string* ErrMsg) {
> - if (Pid_ == 0) {
> + if (Data_ == 0) {
> MakeErrMsg(ErrMsg, "Process not started!");
> return true;
> }
>
> - return (kill(Pid_, SIGKILL) == 0);
> + pid_t pid = reinterpret_cast<pid_t>(Data_);
> + return (kill(pid, SIGKILL) == 0);
> }
>
> bool Program::ChangeStdinToBinary(){
>
> Modified: llvm/trunk/lib/System/Win32/Program.inc
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/System/Win32/Program.inc?rev=81247&r1=81246&r2=81247&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/System/Win32/Program.inc (original)
> +++ llvm/trunk/lib/System/Win32/Program.inc Tue Sep 8 14:50:55 2009
> @@ -25,16 +25,21 @@
> namespace llvm {
> using namespace sys;
>
> -Program::Program() : Pid_(0), Data(0) {}
> +Program::Program() : Data_(0) {}
>
> Program::~Program() {
> - if (Data) {
> - HANDLE hProcess = (HANDLE) Data;
> + if (Data_) {
> + HANDLE hProcess = reinterpret_cast<HANDLE>(Data_);
> CloseHandle(hProcess);
> - Data = 0;
> + Data_ = 0;
> }
> }
>
> +unsigned Program::GetPid() {
> + HANDLE hProcess = reinterpret_cast<HANDLE>(Data_);
> + return GetProcessId(hProcess);
> +}
> +
> // This function just uses the PATH environment variable to find the program.
> Path
> Program::FindProgramByName(const std::string& progName) {
> @@ -132,10 +137,10 @@
> const Path** redirects,
> unsigned memoryLimit,
> std::string* ErrMsg) {
> - if (Data) {
> - HANDLE hProcess = (HANDLE) Data;
> - CloseHandle(Data);
> - Data = 0;
> + if (Data_) {
> + HANDLE hProcess = reinterpret_cast<HANDLE>(Data_);
> + CloseHandle(Data_);
> + Data_ = 0;
> }
>
> if (!path.canExecute()) {
> @@ -264,8 +269,7 @@
> path.str() + "'");
> return false;
> }
> - Pid_ = pi.dwProcessId;
> - Data = pi.hProcess;
> + Data_ = reinterpret_cast<void*>(pi.hProcess);
>
> // Make sure these get closed no matter what.
> AutoHandle hThread(pi.hThread);
> @@ -301,12 +305,12 @@
> int
> Program::Wait(unsigned secondsToWait,
> std::string* ErrMsg) {
> - if (Data == 0) {
> + if (Data_ == 0) {
> MakeErrMsg(ErrMsg, "Process not started!");
> return -1;
> }
>
> - HANDLE hProcess = (HANDLE) Data;
> + HANDLE hProcess = reinterpret_cast<HANDLE>(Data_);
>
> // Wait for the process to terminate.
> DWORD millisecondsToWait = INFINITE;
> @@ -337,12 +341,12 @@
>
> bool
> Program::Kill(std::string* ErrMsg) {
> - if (Data == 0) {
> + if (Data_ == 0) {
> MakeErrMsg(ErrMsg, "Process not started!");
> return true;
> }
>
> - HANDLE hProcess = reinterpret_cast<HANDLE>(Data);
> + HANDLE hProcess = reinterpret_cast<HANDLE>(Data_);
> return TerminateProcess(hProcess, 1);
> }
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
More information about the llvm-commits
mailing list