78 lines
2.5 KiB
C
78 lines
2.5 KiB
C
/****************************************************************
|
|
* *
|
|
* Copyright 2006 Fidelity Information Services, Inc *
|
|
* *
|
|
* This source code contains the intellectual property *
|
|
* of its copyright holder(s), and is made available *
|
|
* under a license. If you do not know the terms of *
|
|
* the license, please stop and do not read further. *
|
|
* *
|
|
****************************************************************/
|
|
|
|
#ifndef _REPL_SEM_H
|
|
#define _REPL_SEM_H
|
|
|
|
#include "repl_sem_sp.h"
|
|
|
|
#define ASSERT_SET_INDEX assert (NUM_SEM_SETS > set_index)
|
|
|
|
enum
|
|
{
|
|
SOURCE,
|
|
RECV,
|
|
NUM_SEM_SETS
|
|
};
|
|
|
|
typedef enum
|
|
{
|
|
JNL_POOL_ACCESS_SEM, /* For Startup / Shutdown / Options-change */
|
|
SRC_SERV_COUNT_SEM, /* Source sever holds it while alive */
|
|
DUMMY_SEM1, /* added just to make the number of semaphores same as in recvpool */
|
|
DUMMY_SEM2, /* added just to make the number of semaphores same as in recvpool */
|
|
SOURCE_ID_SEM,
|
|
NUM_SRC_SEMS
|
|
} source_sem_type;
|
|
|
|
/* The need for the options semaphore is documented towards the end of Section 6.2.6 of the design spec for C9F06-002729 */
|
|
typedef enum
|
|
{
|
|
RECV_POOL_ACCESS_SEM, /* For Startup / Shutdown */
|
|
RECV_SERV_COUNT_SEM, /* Receiver sever holds it while alive */
|
|
UPD_PROC_COUNT_SEM, /* Update process holds it while alive */
|
|
RECV_SERV_OPTIONS_SEM, /* For options change, since it is done through the shared memory */
|
|
RECV_ID_SEM,
|
|
NUM_RECV_SEMS
|
|
} recv_sem_type;
|
|
|
|
typedef enum
|
|
{
|
|
SEM_INFO_VAL,
|
|
SEM_INFO_PID,
|
|
SEM_NUM_INFOS
|
|
} sem_info_type;
|
|
|
|
int grab_sem(int set_index, int sem_num); /* set_index can be SOURCE or RECV */
|
|
int grab_sem_immediate(int set_index, int sem_num);
|
|
int rel_sem(int set_index, int sem_num);
|
|
int rel_sem_immediate(int set_index, int sem_num);
|
|
int get_sem_info(int set_index, int sem_num, sem_info_type info_id);
|
|
int remove_sem_set(int set_index);
|
|
boolean_t sem_set_exists(int which_set);
|
|
|
|
#ifdef UNIX
|
|
void rel_recvpool_ftok_sems(boolean_t, boolean_t);
|
|
void rel_jnlpool_ftok_sems(boolean_t, boolean_t);
|
|
void lock_recvpool_ftok_sems(boolean_t, boolean_t);
|
|
void lock_jnlpool_ftok_sems(boolean_t, boolean_t);
|
|
void get_lock_recvpool_ftok_sems(boolean_t, boolean_t);
|
|
void get_lock_jnlpool_ftok_sems(boolean_t, boolean_t);
|
|
void set_sem_set_src(int semid);
|
|
void set_sem_set_recvr(int semid);
|
|
int grab_sem_all_source(void); /* rollback needs this */
|
|
int grab_sem_all_receive(void); /* rollback needs this */
|
|
int incr_sem(int set_index, int sem_num);
|
|
int decr_sem(int set_index, int sem_num);
|
|
#endif
|
|
|
|
#endif /* _REPL_SEM_H */
|