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
/
os2cthrd.h
< prev
next >
Wrap
C/C++ Source or Header
|
1999-01-02
|
3KB
|
87 lines
/* -*-C-*-
$Id: os2cthrd.h,v 1.7 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_OS2CTHRD_H
#define SCM_OS2CTHRD_H
#ifndef SM_READAHEAD_MAX
#define SM_READAHEAD_MAX 4096
#endif
typedef struct
{
TID tid;
qid_t reader_qid;
qid_t writer_qid;
unsigned int eofp : 1;
unsigned int first_read_p : 1;
} channel_context_t;
#define CHANNEL_CONTEXT_TID(c) ((c) -> tid)
#define CHANNEL_CONTEXT_READER_QID(c) ((c) -> reader_qid)
#define CHANNEL_CONTEXT_WRITER_QID(c) ((c) -> writer_qid)
#define CHANNEL_CONTEXT_EOFP(c) ((c) -> eofp)
#define CHANNEL_CONTEXT_FIRST_READ_P(c) ((c) -> first_read_p)
typedef struct
{
DECLARE_MSG_HEADER_FIELDS;
unsigned short size;
unsigned short index;
char data [SM_READAHEAD_MAX];
} sm_readahead_t;
#define SM_READAHEAD_SIZE(m) (((sm_readahead_t *) (m)) -> size)
#define SM_READAHEAD_INDEX(m) (((sm_readahead_t *) (m)) -> index)
#define SM_READAHEAD_DATA(m) (((sm_readahead_t *) (m)) -> data)
enum readahead_ack_action { raa_read, raa_close };
typedef struct
{
DECLARE_MSG_HEADER_FIELDS;
enum readahead_ack_action action;
} sm_readahead_ack_t;
#define SM_READAHEAD_ACK_ACTION(m) (((sm_readahead_ack_t *) (m)) -> action)
typedef msg_t * (* channel_reader_t) (LHANDLE, qid_t, msg_t *, int *);
extern void OS2_start_channel_thread
(Tchannel, channel_reader_t, channel_op_t);
extern void OS2_channel_thread_read_op
(Tchannel, choparg_t, choparg_t, choparg_t);
extern channel_context_t * OS2_make_channel_context (void);
extern long OS2_channel_thread_read (Tchannel, char *, size_t);
extern enum readahead_ack_action OS2_wait_for_readahead_ack (qid_t);
extern void OS2_channel_thread_close (Tchannel);
#define OS2_make_readahead_buffer OS2_create_msg_fifo
#define OS2_readahead_buffer_emptyp OS2_msg_fifo_emptyp
extern void OS2_readahead_buffer_insert (void *, char);
extern char OS2_readahead_buffer_rubout (void *);
extern msg_t * OS2_make_readahead (void);
extern msg_t * OS2_readahead_buffer_read (void *);
#define OS2_readahead_buffer_read_all(b) \
((msg_t **) (OS2_msg_fifo_remove_all (b)))
#endif /* SCM_OS2CTHRD_H */