You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

340 lines
11 KiB
C

/************************************************************************/
/* SISCO SOFTWARE MODULE HEADER *****************************************/
/************************************************************************/
/* (c) Copyright Systems Integration Specialists Company, Inc., */
/* 1986 - 1997, All Rights Reserved. */
/* */
/* MODULE NAME : mms_psem.h */
/* PRODUCT(S) : MMSEASE, MMSEASE-LITE */
/* */
/* MODULE DESCRIPTION : */
/* This file has the data structures and function definitions */
/* required to interface with MMS semaphore management services */
/* at the primitive level. */
/* */
/* Parameters : In general, the first parameter is the channel */
/* that the request or response is to be sent over. */
/* For Responses, the second parameter is the Invoke */
/* ID to be used. The last parameter is used to pass */
/* operation specific information by pointer. */
/* */
/* Return */
/* Values : Request functions return a pointer to the pending */
/* request tracking structure, of type MMSREQ_PEND. */
/* In case of error, the pointer is returned == 0 */
/* and mms_op_err is written with the err code. */
/* Response functions return 0 if OK, else an error */
/* code. */
/* */
/* MODIFICATION LOG : */
/* Date Who Rev Comments */
/* -------- --- ------ ------------------------------------------- */
/* 12/10/97 MDE 02 Changed entry_class to ST_INT8 */
/* 08/14/97 RKR 01 Format changes */
/* 04/02/97 DTL 7.00 MMSEASE 7.0 release. See MODL70.DOC for */
/* history. */
/************************************************************************/
#ifndef MMS_PSEM_INCLUDED
#define MMS_PSEM_INCLUDED
#ifdef __cplusplus
extern "C" {
#endif
#include "mms_mp.h"
/************************************************************************/
/************************************************************************/
/* SEMAPHORE MANAGEMENT FUNCTIONS */
/************************************************************************/
/* The structures below are used to pass SEMAPHORE MANAGEMENT operation */
/* information to/from the MMS primitives. */
/************************************************************************/
/************************************************************************/
/* TAKE CONTROL, Conformance: SEM1/SEM3 */
/************************************************************************/
/* REQUEST : */
struct takectrl_req_info
{
OBJECT_NAME sem_name; /* semaphore name */
ST_BOOLEAN named_token_pres; /* named token present ind */
ST_CHAR named_token[MAX_IDENT_LEN+1]; /* named token */
ST_UCHAR priority; /* priority */
/* 0 - highest */
/* 64 - normal (default) */
/* 127 - lowest */
ST_BOOLEAN acc_delay_pres; /* acceptable delay present ind */
ST_UINT32 acc_delay; /* acceptable delay */
ST_BOOLEAN ctrl_timeout_pres; /* control timeout present */
ST_UINT32 ctrl_timeout; /* control timeout */
ST_BOOLEAN abrt_on_timeout_pres; /* Abort on Timeout present */
ST_BOOLEAN abrt_on_timeout; /* Abort on Timeout */
ST_BOOLEAN rel_conn_lost; /* relenquish if connection lost*/
ST_BOOLEAN app_preempt_pres; /* app preempt present ind */
ST_INT app_len; /* length of app. to preempt */
ST_UCHAR *app_preempt; /* application to preempt */
SD_END_STRUCT
};
typedef struct takectrl_req_info TAKECTRL_REQ_INFO;
/* RESPONSE : */
struct takectrl_resp_info
{
ST_INT16 resp_tag; /* response tag */
/* 0 : NULL response */
/* 1 : named token response */
ST_CHAR named_token [MAX_IDENT_LEN+1]; /* named token identifier */
SD_END_STRUCT
};
typedef struct takectrl_resp_info TAKECTRL_RESP_INFO;
#ifndef MMS_LITE
MMSREQ_PEND *mp_takectrl (ST_INT chan, TAKECTRL_REQ_INFO *info);
ST_RET mp_takectrl_resp (MMSREQ_IND *ind, TAKECTRL_RESP_INFO *info);
#else
ST_RET mpl_takectrl (TAKECTRL_REQ_INFO *info);
ST_RET mpl_takectrl_resp (ST_UINT32 invoke, TAKECTRL_RESP_INFO *info);
#endif
/************************************************************************/
/* RELINQUISH CONTROL, Conformance: SEM1/SEM3 */
/************************************************************************/
/* REQUEST : */
struct relctrl_req_info
{
OBJECT_NAME sem_name; /* semaphore name */
ST_BOOLEAN named_token_pres; /* named token present ind */
ST_CHAR named_token [MAX_IDENT_LEN+1];/* named token */
SD_END_STRUCT
};
typedef struct relctrl_req_info RELCTRL_REQ_INFO;
/* RESPONSE : NULL */
#ifndef MMS_LITE
MMSREQ_PEND *mp_relctrl (ST_INT chan, RELCTRL_REQ_INFO *info);
ST_RET mp_relctrl_resp (MMSREQ_IND *ind);
#else
ST_RET mpl_relctrl (RELCTRL_REQ_INFO *info);
ST_RET mpl_relctrl_resp (ST_UINT32 invoke);
#endif
/************************************************************************/
/* REPORT SEMAPHORE STATUS, Conformance: SEM1/SEM3 */
/************************************************************************/
/* REQUEST : */
struct rsstat_req_info
{
OBJECT_NAME sem_name; /* semaphore name */
};
typedef struct rsstat_req_info RSSTAT_REQ_INFO;
/* RESPONSE : */
struct rsstat_resp_info
{
ST_BOOLEAN mms_deletable; /* mms deletable */
ST_INT16 tclass; /* class: token (0) or pool (1) */
ST_UINT16 num_of_tokens; /* number of tokens */
ST_UINT16 num_of_owned; /* number of owned tokens */
ST_UINT16 num_of_hung; /* number of hung tokens */
SD_END_STRUCT
};
typedef struct rsstat_resp_info RSSTAT_RESP_INFO;
#ifndef MMS_LITE
MMSREQ_PEND *mp_rsstat (ST_INT chan, RSSTAT_REQ_INFO *info);
ST_RET mp_rsstat_resp (MMSREQ_IND *ind, RSSTAT_RESP_INFO *info);
#else
ST_RET mpl_rsstat (RSSTAT_REQ_INFO *info);
ST_RET mpl_rsstat_resp (ST_UINT32 invoke, RSSTAT_RESP_INFO *info);
#endif
/************************************************************************/
/* REPORT POOL SEMAPHORE STATUS, Conformance: SEM1/SEM3 */
/************************************************************************/
/* REQUEST : */
struct rspool_req_info
{
OBJECT_NAME sem_name; /* semaphore name */
ST_BOOLEAN start_after_pres; /* start after name present ind */
ST_CHAR start_after [MAX_IDENT_LEN+1]; /* name to start after */
SD_END_STRUCT
};
typedef struct rspool_req_info RSPOOL_REQ_INFO;
/* RESPONSE : */
#if !defined (USE_COMPACT_MMS_STRUCTS)
struct token_id
{
ST_INT16 token_tag; /* named token tag */
/* 0 : free named token */
/* 1 : owned named token */
/* 2 : hung named token */
ST_CHAR named_token[MAX_IDENT_LEN+1];/* named token id */
SD_END_STRUCT
};
#else /* Use compact form */
struct token_id
{
ST_INT16 token_tag; /* named token tag */
/* 0 : free named token */
/* 1 : owned named token */
/* 2 : hung named token */
ST_CHAR *named_token; /* named token id */
SD_END_STRUCT
};
#endif
typedef struct token_id TOKEN_ID;
struct rspool_resp_info
{
ST_INT16 num_of_tokens; /* number of named tokens */
ST_BOOLEAN more_follows; /* more follows indicator */
/* list of named tokens */
/* TOKEN_ID named_token_list [num_of_tokens]; */
SD_END_STRUCT
};
typedef struct rspool_resp_info RSPOOL_RESP_INFO;
#ifndef MMS_LITE
MMSREQ_PEND *mp_rspool (ST_INT chan, RSPOOL_REQ_INFO *info);
ST_RET mp_rspool_resp (MMSREQ_IND *ind, RSPOOL_RESP_INFO *info);
#else
ST_RET mpl_rspool (RSPOOL_REQ_INFO *info);
ST_RET mpl_rspool_resp (ST_UINT32 invoke, RSPOOL_RESP_INFO *info);
#endif
/************************************************************************/
/* REPORT SEMAPHORE ENTRY STATUS, Conformance: SEM1/SEM3 */
/************************************************************************/
/* REQUEST : */
struct rsentry_req_info
{
OBJECT_NAME sem_name; /* semaphore name */
ST_INT16 state; /* state: 0 : queued */
/* 1 : owner */
/* 2 : hung */
ST_BOOLEAN start_after_pres; /* start after id present ind */
ST_INT sa_len; /* length of entry id to start */
/* after */
ST_UCHAR *start_after; /* pointer to entry id to start */
/* after */
SD_END_STRUCT
};
typedef struct rsentry_req_info RSENTRY_REQ_INFO;
/* RESPONSE : */
struct semaphore_entry
{
ST_INT ei_len; /* entry id length */
ST_UCHAR *entry_id; /* entry id */
ST_INT8 entry_class; /* entry class */
ST_INT app_ref_len; /* app ref length (obj ident) */
ST_UCHAR *app_ref; /* application reference */
ST_BOOLEAN named_token_pres; /* named token present ind */
ST_CHAR named_token[MAX_IDENT_LEN+1];/* named token */
ST_UCHAR priority; /* priority */
/* 0 - highest */
/* 64 - normal (default) */
/* 127 - lowest */
ST_BOOLEAN rem_timeout_pres; /* relinquish timeout present */
ST_UINT32 rem_timeout; /* relinquish timeout */
ST_BOOLEAN abrt_on_timeout_pres; /* Abort On Timeout present */
ST_BOOLEAN abrt_on_timeout; /* Abort On Timeout */
ST_BOOLEAN rel_conn_lost; /* relenquish if connection lost*/
SD_END_STRUCT
};
typedef struct semaphore_entry SEMAPHORE_ENTRY;
struct rsentry_resp_info
{
ST_INT num_of_sent; /* number of semaphore entries */
ST_BOOLEAN more_follows; /* more follows indicator */
/* list of semaphore entries */
/* SEMAPHORE_ENTRY sent_list [num_of_sent]; */
SD_END_STRUCT
};
typedef struct rsentry_resp_info RSENTRY_RESP_INFO;
#ifndef MMS_LITE
MMSREQ_PEND *mp_rsentry (ST_INT chan, RSENTRY_REQ_INFO *info);
ST_RET mp_rsentry_resp (MMSREQ_IND *ind, RSENTRY_RESP_INFO *info);
#else
ST_RET mpl_rsentry (RSENTRY_REQ_INFO *info);
ST_RET mpl_rsentry_resp (ST_UINT32 invoke, RSENTRY_RESP_INFO *info);
#endif
/************************************************************************/
/* DEFINE SEMAPHORE, Conformance: SEM3 */
/************************************************************************/
/* REQUEST : */
struct defsem_req_info
{
OBJECT_NAME sem_name; /* semaphore name */
ST_UINT16 num_of_tokens; /* number of tokens */
SD_END_STRUCT
};
typedef struct defsem_req_info DEFSEM_REQ_INFO;
/* RESPONSE : NULL */
#ifndef MMS_LITE
MMSREQ_PEND *mp_defsem (ST_INT chan, DEFSEM_REQ_INFO *info);
ST_RET mp_defsem_resp (MMSREQ_IND *ind);
#else
ST_RET mpl_defsem (DEFSEM_REQ_INFO *info);
ST_RET mpl_defsem_resp (ST_UINT32 invoke);
#endif
/************************************************************************/
/* DELETE SEMAPHORE, Conformance: SEM3 */
/************************************************************************/
/* REQUEST : */
struct delsem_req_info
{
OBJECT_NAME sem_name; /* semaphore name */
};
typedef struct delsem_req_info DELSEM_REQ_INFO;
/* RESPONSE : NULL */
#ifndef MMS_LITE
MMSREQ_PEND *mp_delsem (ST_INT chan, DELSEM_REQ_INFO *info);
ST_RET mp_delsem_resp (MMSREQ_IND *ind);
#else
ST_RET mpl_delsem (DELSEM_REQ_INFO *info);
ST_RET mpl_delsem_resp (ST_UINT32 invoke);
#endif
#ifdef __cplusplus
}
#endif
#endif /* #define MMS_PSEM_INCLUDED */