1 /* -*-C-*-
2 
3 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
4     1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
5     2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Massachusetts
6     Institute of Technology
7 
8 This file is part of MIT/GNU Scheme.
9 
10 MIT/GNU Scheme is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 2 of the License, or (at
13 your option) any later version.
14 
15 MIT/GNU Scheme is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18 General Public License for more details.
19 
20 You should have received a copy of the GNU General Public License
21 along with MIT/GNU Scheme; if not, write to the Free Software
22 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,
23 USA.
24 
25 */
26 
27 #ifndef SCM_UXPROC_H
28 #define SCM_UXPROC_H
29 
30 #include "osproc.h"
31 
32 struct process
33 {
34   pid_t id;
35   long tick;
36   long sync_tick;
37   unsigned short raw_reason;
38   unsigned short reason;
39   enum process_status raw_status;
40   enum process_status status;
41   enum process_jc_status jc_status;
42 };
43 
44 #define PROCESS_ID(process) ((process_table [(process)]) . id)
45 #define PROCESS_TICK(process) ((process_table [(process)]) . tick)
46 #define PROCESS_SYNC_TICK(process) ((process_table [(process)]) . sync_tick)
47 #define PROCESS_RAW_REASON(process) ((process_table [(process)]) . raw_reason)
48 #define PROCESS_REASON(process) ((process_table [(process)]) . reason)
49 #define PROCESS_RAW_STATUS(process) ((process_table [(process)]) . raw_status)
50 #define PROCESS_STATUS(process) ((process_table [(process)]) . status)
51 #define PROCESS_JC_STATUS(process) ((process_table [(process)]) . jc_status)
52 
53 extern struct process * process_table;
54 
55 /* OS_make_subprocess is obsolete, but it uses the same interface as
56    UX_make_subprocess.  */
57 #define UX_make_subprocess OS_make_subprocess
58 
59 #endif /* SCM_UXPROC_H */
60