Files
vxWorks/h/private/shellInOutLibP.h
2025-08-20 18:25:46 +08:00

101 lines
2.3 KiB
C

/* shellInOutLibP.h - private header file for the shell IO management module */
/* Copyright 2004 Wind River Systems, Inc. */
/*
modification history
--------------------
01e,22sep04,bpn Added some definitions from shellInOutLib.h.
01d,30jun04,bpn Fixed SPR#97937: removed shellInOutCompatible...() functions.
01c,15apr04,bpn Added background structure definition.
01b,26mar04,bpn Added structure definitions for shellInOutBlockingXxx()
functions.
01a,17feb04,bpn Written.
*/
#ifndef __INCshellInOutLibPh
#define __INCshellInOutLibPh
#ifdef __cplusplus
extern "C" {
#endif
#include <lstLib.h>
#include <shellLib.h>
enum ioType
{
SHELL_IO_REDIR = 1,
SHELL_IO_BLOCKING,
SHELL_IO_BACKGROUND
};
struct redirection
{
BOOL isRedirected; /* TRUE if redirected */
int curInFd; /* input before redirection */
int curOutFd; /* output before redirection */
int curErrFd; /* error before redirection */
int inFd; /* input for redirection */
int outFd; /* output for redirection */
int errFd; /* error for redirection */
#ifdef HOST
int haveTerminal; /* for host shell */
#endif
};
struct blocking
{
char * name;
int masterFd;
int slaveFd;
BOOL isBlocked;
SEM_ID stateMutexId;
SEM_ID structMutexId;
UINT32 data;
};
struct background
{
char * name;
#ifdef HOST
char * masterFilename;
char * slaveFilename;
#endif
int masterFd;
int slaveFd;
};
union ioData
{
struct blocking blocking;
struct redirection redirection;
struct background background;
};
typedef struct shell_io_fd_node
{
NODE node;
enum ioType type;
union ioData data;
} SHELL_IO_FD_NODE;
extern BOOL shellInOutInputUniqueCheck (int shellInputFd);
extern STATUS shellInOutInputHookSet (SHELL_ID shellId);
extern STATUS shellInOutInputHookUnset (SHELL_ID shellId);
/* XXX bpn - define this function here because they are used by edrStub.c */
extern int shellPrint (SHELL_ID shellId, const char * fmt, ...);
extern int shellPrintErr (SHELL_ID shellId, const char * fmt, ...);
/* XXX bpn - define this function here because they are used by external files */
extern void shellInOutUse (SHELL_ID shellId);
#ifdef __cplusplus
}
#endif
#endif /* __INCshellInOutLibPh */