/*
Copyright (c) 1993 Xerox Corporation. All rights reserved.
*/
/*
$Id$
$Date$
*
* PCR - IOGbl glue
*
* Create procs for IOGbl.
*/
#ifndef ←←PCR←IOGblGlue←h
#define ←←PCR←IOGblGlue←h 1
#include <config/PCR←StdDefs.h>
#include <th/PCR←Th.h>
#include <io/PCR←IOGbl.h>
/*
All the following procs create descriptors with local ref cnt == 1.
They are initially NIL if not provided.
*/
typedef PCR←ERes PCR←IOGblGlue←CreateProc(
const PCR←sigset←t *sigMask, PCR←Msec wakeup,
PCR←IOGbl←DEPtr *gdep,
PCR←Any cmd, ...
);
extern PCR←IOGblGlue←CreateProc PCR←IOGblGlue←Create;
typedef PCR←ERes PCR←IOGblGlue←CreatePairProc(
const PCR←sigset←t *sigMask, PCR←Msec wakeup,
PCR←IOGbl←DEPtr *gde0p, PCR←IOGbl←DEPtr *gde1p,
PCR←Any cmd, ...
);
extern PCR←IOGblGlue←CreatePairProc PCR←IOGblGlue←CreatePair;
typedef PCR←ERes PCR←IOGblGlue←OpenProc(
const char *fileName, int oflag, mode←t mode,
const PCR←sigset←t *sigMask, PCR←Msec wakeup,
PCR←IOGbl←DEPtr *gdep
);
extern PCR←IOGblGlue←OpenProc PCR←IOGblGlue←Open;
typedef PCR←ERes PCR←IOGblGlue←PipeProc(
const PCR←sigset←t *sigMask, PCR←Msec wakeup,
PCR←IOGbl←DEPtr *gde0p, PCR←IOGbl←DEPtr *gde1p
);
extern PCR←IOGblGlue←PipeProc PCR←IOGblGlue←Pipe;
/*
* Glue to allow stdin/stdout/stderr to be handled correctly ...
*/
PCR←IOGbl←DEPtr (*PCR←IOGBlGlue←getStd)(int fildes);
/*
... std descriptors for threads.
*/
PCR←Any /* info */ (* volatile PCR←IOGblGlue←lockStdHD)(int hd);
void (* volatile PCR←IOGblGlue←unlockStdHD)(int hd, PCR←Any info);
/*
... for console messages and termination cleanup.
({lock,print,unlock} must be in critical section).
*/
/*
* Initialization -- called from PCR←IOGblImpl.c if defined by
* a service provider ...
*/
PCR←ERes (*PCR←IOGBlGlue←setup)(void);
PCR←ERes (*PCR←IOGblGlue←run)(void);
#endif /* ! ←←PCR←IOGblGlue←h */
/*
$Log$
*/