#include "il2cpp-config.h" 
 | 
  
 | 
#if IL2CPP_TARGET_DARWIN 
 | 
  
 | 
#include <sys/types.h> 
 | 
#if !IL2CPP_TARGET_IOS 
 | 
#include <libproc.h> 
 | 
#endif 
 | 
#include <unistd.h> 
 | 
#include <stdlib.h> 
 | 
  
 | 
#include "os/Process.h" 
 | 
#include "il2cpp-vm-support.h" 
 | 
  
 | 
struct ProcessHandle 
 | 
{ 
 | 
    pid_t pid; 
 | 
}; 
 | 
  
 | 
namespace il2cpp 
 | 
{ 
 | 
namespace os 
 | 
{ 
 | 
    int Process::GetCurrentProcessId() 
 | 
    { 
 | 
        return getpid(); 
 | 
    } 
 | 
  
 | 
    ProcessHandle* Process::GetProcess(int processId) 
 | 
    { 
 | 
        // If/when we implement the CreateProcess_internal icall we will likely 
 | 
        // need to so something smarter here to find the process if we did 
 | 
        // not create it and return a known pseudo-handle. For now this 
 | 
        // is sufficient though. 
 | 
        return (ProcessHandle*)(intptr_t)processId; 
 | 
    } 
 | 
  
 | 
    void Process::FreeProcess(ProcessHandle* handle) 
 | 
    { 
 | 
        // We have nothing to do here. 
 | 
    } 
 | 
  
 | 
    std::string Process::GetProcessName(ProcessHandle* handle) 
 | 
    { 
 | 
#if !IL2CPP_TARGET_IOS 
 | 
        const size_t bufferLength = 256; 
 | 
        char buf[bufferLength]; 
 | 
        int length = proc_name((int)((intptr_t)handle), buf, bufferLength); 
 | 
  
 | 
        if (length <= 0) 
 | 
            return std::string(); 
 | 
  
 | 
        return std::string(buf, length); 
 | 
#else 
 | 
        IL2CPP_VM_NOT_SUPPORTED(Process::GetProcessName, "GetProcessName is not supported for non-Windows/OSX desktop platforms"); 
 | 
        return std::string(); 
 | 
#endif 
 | 
    } 
 | 
} 
 | 
} 
 | 
  
 | 
#endif 
 |