示例#1
0
/**
 *	handle the fault.* event
 *
 *	@result:
 *		list.* event
 */
fmd_event_t *
apache_handle_event(fmd_t *pfmd, fmd_event_t *e)
{
	fmd_debug;

	system("service httpd stop");
	system("service httpd start");
	return fmd_create_listevent(e, LIST_RECOVER_SUCCESS);
}
示例#2
0
/**
 *	handle the fault.* event
 *
 *	@result:
 *		list.* event
 */
fmd_event_t *
sysagent_handle_event(fmd_t *pfmd, fmd_event_t *e)
{
	fmd_debug;
	int ret = 0;

	/* offline */
	if (strstr(e->ev_class, "fault.cpu.intel.quickpath.mem_page_ce") != NULL) {
		if ((ret = pages_offline(pfmd, e->ev_rscid)) == 0)
			return fmd_create_listevent(e, LIST_ISOLATED_SUCCESS);
		else
			return fmd_create_listevent(e, LIST_ISOLATED_FAILED);
	} else {
//		warning();
		return fmd_create_listevent(e, LIST_LOG);
	}

	/* never reach */
	return fmd_create_listevent(e, LIST_LOG);
}
示例#3
0
/**
 *	handle the fault.* event
 *
 *	@result:
 *		list.* event
 */
fmd_event_t *
cpumem_handle_event(fmd_t *pfmd, fmd_event_t *e)
{
	fmd_debug;
	int ret = 0;

	/* Memory offline */
	if (strstr(e->ev_class, "fault.cpu.intel.mem_dev") != NULL ){
		ret = pages_offline(pfmd, e->ev_rscid);
		if ( ret == 0 )
			return fmd_create_listevent(e, LIST_ISOLATED_SUCCESS);
		else
			return fmd_create_listevent(e, LIST_ISOLATED_FAILED);
	}
	/* CPU offline */
	else if (strstr(e->ev_class, "fault.cpu.intel") != NULL) {
		char buf[64];
		int cpu = -1;
		cpu = topo_cpu_by_cpuid(pfmd, e->ev_rscid);					/* get CPUID */
		if (cpu < 0)
			return fmd_create_listevent(e, LIST_ISOLATED_FAILED);	

		memset(buf, 0, 64 * sizeof(char));
		sprintf(buf, "/sys/devices/system/cpu/cpu%d/online", cpu);
		if ((ret = cpu_offline(buf)) == 0)
			return fmd_create_listevent(e, LIST_ISOLATED_SUCCESS);
		else
			return fmd_create_listevent(e, LIST_ISOLATED_FAILED);
	}

	return fmd_create_listevent(e, LIST_LOG);	// TODO
}
示例#4
0
文件: cpumem_agent.c 项目: kadoma/fms
fmd_event_t *
cpumem_handle_event(fmd_t *pfmd, fmd_event_t *e)
{
	int action = 0;
	int ret = 0;
	uint64_t ev_flag;

	ev_flag = e->ev_flag;
	wr_log(CMEA_LOG_DOMAIN, WR_LOG_DEBUG,
		"handle event, class: %s  flag: 0X%08x, handle_mode: 0X%08x", 
		e->ev_class, ev_flag, e->handle_mode);

	__log_event(e); 
	
	switch (ev_flag) {
	case AGENT_TODO:
		wr_log(CMEA_LOG_DOMAIN, WR_LOG_DEBUG, 
			"cpumem agent handle fault event.");

		if (e->handle_mode & EVENT_HANDLE_MODE_AUTO)
			ret = __handle_fault_event(e);
		/* add other handle mode, eg. user-define. */
		if(e->handle_mode == EVENT_HANDLE_MODE_MANUAL)
			ret = LIST_REPAIRED_MANUAL;
		
		e->event_type = EVENT_LIST;
		__log_event(e);
		action = 1;
		break;
	}

	if (!action) {
		wr_log(CMEA_LOG_DOMAIN, WR_LOG_DEBUG, 
			"cpumem agent log event.");
		return NULL;
	}
	
	wr_log(CMEA_LOG_DOMAIN, WR_LOG_DEBUG,
			"handle event result: %08x", 
			ret);
	
	return (fmd_event_t *)fmd_create_listevent(e, ret);
}