⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bank_stat_moni.c

📁 API
💻 C
字号:
/*=============================================================
功能: 	初始化用于监控系统状态的信号灯,取信号灯,P,V操作
作者:		
王永忠:2001/03/29:规范程序设计

周国祥:2001/05/12  从mytools/bank_stat.c中分离而生成本文件
===============================================================*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include "shmsys.h"
#include "mytools.h"

int	bank_stat_sem;

/*---------------------------------------------
功能:
初始化用于监控系统状态的信号灯
ENTRY:	
RETURN:	0	SUCC
	-1	FAIL
-----------------------------------------------*/

int init_bank_stat_moni ()
{
	int i;

	if ((bank_stat_sem = creat_sem(SHMFILE, BANK_STAT_SHM, 1)) < 0 ){
		errcall ( ERROR , "ERR create bank stat monitor sem !" );
		return -1;
	}
	
	semctl ( bank_stat_sem , 0 , SETVAL , 1 );

	return 0;
}

/*---------------------------------------------
功能:
取用于监控系统状态的信号灯
ENTRY:	
RETURN:	0	SUCC
	-1	FAIL
-----------------------------------------------*/
int get_bank_stat_moni ()
{
	int i;
	
	if ( ( bank_stat_sem = get_sem ( SHMFILE , BANK_STAT_SHM , 1 )) < 0 ) {
		errcall ( ERROR , "ERR get sem !" );
		return -1;
	}
	
	return 0;
}

/*---------------------------------------------
功能:
删除用于监控系统状态的信号灯
ENTRY:	
RETURN:	0	SUCC
	-1	FAIL
-----------------------------------------------*/
int del_bank_stat_moni ()
{
	int i;
	
	if (rm_sem( SHMFILE, BANK_STAT_SHM) < 0 ) {
		errcall ( ERROR , "ERR rm BANK_STAT_SHM sem !" );
		return -1;
	}
	
	return 0;
}

/*---------------------------------------------
功能:
P操作
ENTRY:	
RETURN:	
-----------------------------------------------*/
int wait_moni ()
{
	int i;

	sem_P ( bank_stat_sem , 0 , 0 );
}

/*---------------------------------------------
功能:
V操作
ENTRY:	
RETURN:	
-----------------------------------------------*/
int wackup_moni ()
{
	semctl ( bank_stat_sem , 0 , SETVAL , 1 );
}

/*
 * 唤醒网络监控处理
 */
active_netmoni()
{
	/*
	 * 联行状态监控
	 */
	get_bank_stat_moni ();
	if ( getipc () < 0 ) {
		errcall ( ERROR , "Unable get shm1 !" );
		return -7;
	}

	/*
	 * 告诉网络监控进程需要重新装载状态信息
	 */
	set_reload_num ();

	/*
	 * 唤醒监控进程
	 */
	wackup_moni ();

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -