ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/rtprocess.h
(Generate patch)

Comparing ray/src/common/rtprocess.h (file contents):
Revision 3.4 by schorsch, Mon Jul 14 22:23:59 2003 UTC vs.
Revision 3.17 by greg, Tue Mar 20 17:45:07 2018 UTC

# Line 9 | Line 9
9   #define _RAD_PROCESS_H_
10  
11   #include  <errno.h>
12 < #ifdef _WIN32
12 > #include <stdio.h>
13 > #if defined(_WIN32) || defined(_WIN64)
14    #include <windows.h> /* DWORD etc. */
15 <  typedef DWORD pid_t;
15 >  typedef DWORD RT_PID;
16    #include <process.h> /* getpid() and others */
17 +  #define getpid _getpid
18 +  #define execv _execv
19 +  #define execvp _execvp
20   #else
21    #include <sys/param.h>
22 +  #include <sys/types.h>
23 +  typedef pid_t RT_PID;
24   #endif
25  
26   #include "paths.h"
# Line 28 | Line 34 | extern "C" {
34  
35     This means that we shouldn't rely on PIDs and file descriptors
36     being the same type, so we have to describe processes with a struct,
37 <   instead of the original int[3]. To keep things simple, we typedef
38 <   the posix pid_t on those systems that don't have it already.
33 <
34 <   Some older Windows systems use negative PIDs. Open_process() and
35 <   close_process() will convert those to positive values during
36 <   runtime, so that client modules can still use -1 as invalid PID.
37 >   instead of the original int[3]. For that purpose, we typedef a
38 >   platform independent RT_PID.
39   */
40  
41  
# Line 53 | Line 55 | typedef struct {
55          int r; /* read handle */
56          int w; /* write handle */
57          int running; /* doing something */
58 <        pid_t pid; /* process ID */
58 >        RT_PID pid; /* process ID */
59   } SUBPROC;
60  
61   #define SP_INACTIVE {-1,-1,0,0} /* for static initializations */
62  
63 + #define close_process(pd)       close_processes(pd,1)
64 +
65   extern int open_process(SUBPROC *pd, char *av[]);
66 < extern int close_process(SUBPROC *pd);
66 > extern int close_processes(SUBPROC pd[], int nproc);
67   extern int process(SUBPROC *pd, char *recvbuf, char *sendbuf, int nbr, int nbs);
68   extern int readbuf(int fd, char *bpos, int siz);
69   extern int writebuf(int fd, char *bpos, int siz);
70 +
71 + #if defined(_WIN32) || defined(_WIN64)
72 + /* any non-negative increment will send the process to IDLE_PRIORITY_CLASS. */
73 + extern int win_kill(RT_PID pid, int sig /* ignored */);
74 + extern int win_nice(int inc);
75 + #endif
76  
77  
78   #ifdef __cplusplus

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines