home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
mitsch75.zip
/
scheme-7_5_17-src.zip
/
scheme-7.5.17
/
src
/
microcode
/
os2thrd.h
< prev
next >
Wrap
C/C++ Source or Header
|
1999-01-02
|
3KB
|
90 lines
/* -*-C-*-
$Id: os2thrd.h,v 1.4 1999/01/02 06:11:34 cph Exp $
Copyright (c) 1994-1999 Massachusetts Institute of Technology
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef SCM_OS2THRD_H
#define SCM_OS2THRD_H
typedef void (* thread_procedure_t) (void *);
typedef void (* error_hook_t) (msg_t *);
typedef struct
{
error_hook_t error_hook;
jmp_buf error_restart;
PEXCEPTIONREGISTRATIONRECORD exception_handler;
qid_t error_queue;
char fatal_error_buffer [1024];
} thread_store_t;
#define THREAD_ERROR_HOOK() ((* (OS2_threadstore ())) -> error_hook)
#define THREAD_ERROR_RESTART() ((* (OS2_threadstore ())) -> error_restart)
#define THREAD_ERROR_QUEUE() ((* (OS2_threadstore ())) -> error_queue)
#define THREAD_FATAL_ERROR_BUFFER() \
((* (OS2_threadstore ())) -> fatal_error_buffer)
#define THREAD_EXCEPTION_HANDLER() \
((* (OS2_threadstore ())) -> exception_handler)
typedef struct
{
DECLARE_MSG_HEADER_FIELDS;
int code;
enum syscall_names name;
} sm_syscall_error_t;
#define SM_SYSCALL_ERROR_CODE(m) (((sm_syscall_error_t *) (m)) -> code)
#define SM_SYSCALL_ERROR_NAME(m) (((sm_syscall_error_t *) (m)) -> name)
typedef struct
{
DECLARE_MSG_HEADER_FIELDS;
long code;
} sm_error_t;
#define SM_ERROR_CODE(m) (((sm_error_t *) (m)) -> code)
typedef msg_t sm_kill_request_t;
#define OS2_make_kill_request() OS2_create_message (mt_kill_request)
extern TID OS2_beginthread (thread_procedure_t, void *, unsigned int);
extern void OS2_endthread (void);
extern void OS2_kill_thread (TID);
extern TID OS2_current_tid (void);
#ifdef __IBMC__
#define OS2_threadstore() ((thread_store_t **) (_threadstore ()))
#else
extern thread_store_t ** OS2_threadstore (void);
#endif
extern PID OS2_scheme_pid;
extern TID OS2_scheme_tid;
extern int OS2_thread_initialize (PEXCEPTIONREGISTRATIONRECORD, qid_t);
extern int OS2_thread_initialize_1 (PEXCEPTIONREGISTRATIONRECORD, qid_t);
extern int OS2_error_message_p (msg_t *);
extern void OS2_handle_error_message (msg_t *);
extern void OS2_ignore_errors (void);
extern void OS2_error_system_call (int, enum syscall_names);
extern void OS2_error_anonymous (void);
extern void OS2_error_unimplemented_primitive (void);
extern void OS2_error_out_of_channels (void);
extern msg_t * OS2_make_syscall_error (int, enum syscall_names);
extern msg_t * OS2_make_error (long);
#endif /* SCM_OS2THRD_H */