aboutsummaryrefslogtreecommitdiffstats
path: root/emulator/opengl/shared/OpenglOsUtils/osProcessUnix.cpp
diff options
context:
space:
mode:
authorDavid 'Digit' Turner <digit@google.com>2015-03-20 22:16:47 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-03-20 22:16:47 +0000
commit654f070478a652eebbf6560f593e8e7c97388e80 (patch)
tree842029b9ec6fc084ddf70997e603a7bd8e530a8c /emulator/opengl/shared/OpenglOsUtils/osProcessUnix.cpp
parent5b69bb42bbdd028daae30d1b1258914f9cb9fa59 (diff)
parenta268ba5f6bbbc67904124f7368f617dbb3fae6ef (diff)
downloadsdk-654f070478a652eebbf6560f593e8e7c97388e80.zip
sdk-654f070478a652eebbf6560f593e8e7c97388e80.tar.gz
sdk-654f070478a652eebbf6560f593e8e7c97388e80.tar.bz2
am a268ba5f: am c245592b: Merge changes I551e0f3d,I26d84cf5,I27c993d1 into idea133 automerge: 4e42336
* commit 'a268ba5f6bbbc67904124f7368f617dbb3fae6ef': emulator/opengl: Remove out-of-process handling code. emulator/opengl: refactor Thread class. emulator/opengl: refactor shared library handling.
Diffstat (limited to 'emulator/opengl/shared/OpenglOsUtils/osProcessUnix.cpp')
-rw-r--r--emulator/opengl/shared/OpenglOsUtils/osProcessUnix.cpp210
1 files changed, 0 insertions, 210 deletions
diff --git a/emulator/opengl/shared/OpenglOsUtils/osProcessUnix.cpp b/emulator/opengl/shared/OpenglOsUtils/osProcessUnix.cpp
deleted file mode 100644
index c97ff58..0000000
--- a/emulator/opengl/shared/OpenglOsUtils/osProcessUnix.cpp
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "osProcess.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/wait.h>
-#include <sys/types.h>
-#include <poll.h>
-#include <pthread.h>
-#include <string.h>
-#include <pwd.h>
-#include <paths.h>
-#include <errno.h>
-#include <signal.h>
-#include <unistd.h>
-#include <assert.h>
-
-namespace osUtils {
-
-//
-// buildArgList converts a command line into null terminated argument list.
-// to be used with execv or execvp.
-// each argument is seperated by space or tab, to specify multiple words
-// at the same argument place it inside single-quoted or double-quoted string.
-//
-static char **buildArgList(const char *command)
-{
- char **argv = NULL;
- int argvSize = 0;
- int nArgs = 0;
- char *tmpcmd = strdup(command);
- char *t = tmpcmd;
- char *strStart = NULL;
- int i = 0;
-
- #define ADD_ARG \
- { \
- nArgs++; \
- if (!argv) { \
- argvSize = 12; \
- argv = (char **)malloc(argvSize * sizeof(char *)); \
- } \
- else if (nArgs > argvSize) { \
- argvSize += 12; \
- argv = (char **)realloc(argv, argvSize * sizeof(char *)); \
- } \
- argv[nArgs-1] = t; \
- t = NULL; \
- }
-
- while( tmpcmd[i] != '\0' ) {
- if (!strStart) {
- if (tmpcmd[i] == '"' || tmpcmd[i] == '\'') {
- strStart = &tmpcmd[i];
- }
- else if (tmpcmd[i] == ' ' || tmpcmd[i] == '\t') {
- tmpcmd[i] = '\0';
- if (t) ADD_ARG;
- }
- else if (!t) {
- t = &tmpcmd[i];
- }
- }
- else if (tmpcmd[i] == *strStart) {
- t = strStart;
- strStart = NULL;
- }
-
- i++;
- }
- if (t) {
- ADD_ARG;
- }
- if (nArgs > 0) {
- ADD_ARG; // for NULL terminating list
- }
-
- return argv;
-}
-
-static pid_t start_process(const char *command,const char *startDir)
-{
- pid_t pid;
-
- pid = fork();
-
- if (pid < 0) {
- return pid;
- }
- else if (pid == 0) {
- //
- // Close all opened file descriptors
- //
- for (int i=3; i<256; i++) {
- close(i);
- }
-
- if (startDir) {
- chdir(startDir);
- }
-
- char **argv = buildArgList(command);
- if (!argv) {
- return -1;
- }
- execvp(argv[0], argv);
-
- perror("execl");
- exit(-101);
- }
-
- return pid;
-}
-
-childProcess *
-childProcess::create(const char *p_cmdLine, const char *p_startdir)
-{
- childProcess *child = new childProcess();
- if (!child) {
- return NULL;
- }
-
- child->m_pid = start_process(p_cmdLine, p_startdir);
- if (child->m_pid < 0) {
- delete child;
- return NULL;
- }
-
- return child;
-}
-
-childProcess::~childProcess()
-{
-}
-
-bool
-childProcess::wait(int *exitStatus)
-{
- int ret=0;
- if (m_pid>0) {
- pid_t pid = waitpid(m_pid,&ret,0);
- if (pid != -1) {
- m_pid=-1;
- if (exitStatus) {
- *exitStatus = ret;
- }
- return true;
- }
- }
- return false;
-}
-
-int
-childProcess::tryWait(bool &isAlive)
-{
- int ret=0;
- isAlive = false;
- if (m_pid>0) {
- pid_t pid = waitpid(m_pid,&ret,WNOHANG);
- if (pid == 0) {
- isAlive = true;
- }
- }
-
- return ((char)WEXITSTATUS(ret));
-}
-
-int ProcessGetPID()
-{
- return getpid();
-}
-
-int KillProcess(int pid, bool wait)
-{
- if (pid<1) {
- return false;
- }
-
- if (0!=kill(pid,SIGTERM)) {
- return false;
- }
-
- if (wait) {
- if (waitpid(pid,NULL,0)<0) {
- return false;
- }
- }
-
- return true;
-}
-
-bool isProcessRunning(int pid)
-{
- return (kill(pid,0) == 0);
-}
-
-} // of namespace osUtils