亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xenstat_linux.c

?? xen 3.2.2 源碼
?? C
字號:
/* libxenstat: statistics-collection library for Xen * Copyright (C) International Business Machines Corp., 2005 * Authors: Josh Triplett <josh@kernel.org> *          Judy Fischbach <jfisch@cs.pdx.edu> *          David Hendricks <cro_marmot@comcast.net> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. *//* * Copyright 2007 Sun Microsystems, Inc.  All rights reserved. * Use is subject to license terms. */#include <fcntl.h>#include <dirent.h>#include <sys/types.h>#include <sys/stat.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include "xenstat_priv.h"#define SYSFS_VBD_PATH "/sys/devices/xen-backend/"struct priv_data {	FILE *procnetdev;	DIR *sysfsvbd;};static struct priv_data *get_priv_data(xenstat_handle *handle){	if (handle->priv != NULL)		return handle->priv;	handle->priv = malloc(sizeof(struct priv_data));	if (handle->priv == NULL)		return (NULL);	((struct priv_data *)handle->priv)->procnetdev = NULL;	((struct priv_data *)handle->priv)->sysfsvbd = NULL;	return handle->priv;}/* Expected format of /proc/net/dev */static const char PROCNETDEV_HEADER[] =    "Inter-|   Receive                                                |"    "  Transmit\n"    " face |bytes    packets errs drop fifo frame compressed multicast|"    "bytes    packets errs drop fifo colls carrier compressed\n";/* Collect information about networks */int xenstat_collect_networks(xenstat_node * node){	struct priv_data *priv = get_priv_data(node->handle);	if (priv == NULL) {		perror("Allocation error");		return 0;	}	/* Open and validate /proc/net/dev if we haven't already */	if (priv->procnetdev == NULL) {		char header[sizeof(PROCNETDEV_HEADER)];		priv->procnetdev = fopen("/proc/net/dev", "r");		if (priv->procnetdev == NULL) {			perror("Error opening /proc/net/dev");			return 0;		}		/* Validate the format of /proc/net/dev */		if (fread(header, sizeof(PROCNETDEV_HEADER) - 1, 1,			  priv->procnetdev) != 1) {			perror("Error reading /proc/net/dev header");			return 0;		}		header[sizeof(PROCNETDEV_HEADER) - 1] = '\0';		if (strcmp(header, PROCNETDEV_HEADER) != 0) {			fprintf(stderr,				"Unexpected /proc/net/dev format\n");			return 0;		}	}	/* Fill in networks */	/* FIXME: optimize this */	fseek(priv->procnetdev, sizeof(PROCNETDEV_HEADER) - 1,	      SEEK_SET);	while (1) {		xenstat_domain *domain;		xenstat_network net;		unsigned int domid;		int ret = fscanf(priv->procnetdev,				 "vif%u.%u:%llu%llu%llu%llu%*u%*u%*u%*u"				 "%llu%llu%llu%llu%*u%*u%*u%*u\n",				 &domid, &net.id,				 &net.tbytes, &net.tpackets, &net.terrs,				 &net.tdrop,				 &net.rbytes, &net.rpackets, &net.rerrs,				 &net.rdrop);		if (ret == EOF)			break;		if (ret != 10) {			unsigned int c;			do {				c = fgetc(priv->procnetdev);			} while (c != '\n' && c != EOF);			if (c == EOF)				break;			continue;		}		/* FIXME: this does a search for the domid */		domain = xenstat_node_domain(node, domid);		if (domain == NULL) {			fprintf(stderr,				"Found interface vif%u.%u but domain %u"				" does not exist.\n", domid, net.id,				domid);			continue;		}		if (domain->networks == NULL) {			domain->num_networks = 1;			domain->networks = malloc(sizeof(xenstat_network));		} else {			struct xenstat_network *tmp;			domain->num_networks++;			tmp = realloc(domain->networks,				      domain->num_networks *				      sizeof(xenstat_network));			if (tmp == NULL)				free(domain->networks);			domain->networks = tmp;		}		if (domain->networks == NULL)			return 0;		domain->networks[domain->num_networks - 1] = net;	}	return 1;}/* Free network information in handle */void xenstat_uninit_networks(xenstat_handle * handle){	struct priv_data *priv = get_priv_data(handle);	if (priv != NULL && priv->procnetdev != NULL)		fclose(priv->procnetdev);}static int read_attributes_vbd(const char *vbd_directory, const char *what, char *ret, int cap){	static char file_name[80];	int fd, num_read;	sprintf(file_name, "%s/%s/%s", SYSFS_VBD_PATH, vbd_directory, what);	fd = open(file_name, O_RDONLY, 0);	if (fd==-1) return -1;	num_read = read(fd, ret, cap - 1);	close(fd);	if (num_read<=0) return -1;	ret[num_read] = '\0';	return num_read;}/* Collect information about VBDs */int xenstat_collect_vbds(xenstat_node * node){	struct dirent *dp;	struct priv_data *priv = get_priv_data(node->handle);	if (priv == NULL) {		perror("Allocation error");		return 0;	}	if (priv->sysfsvbd == NULL) {		priv->sysfsvbd = opendir(SYSFS_VBD_PATH);		if (priv->sysfsvbd == NULL) {			perror("Error opening " SYSFS_VBD_PATH);			return 0;		}	}	rewinddir(priv->sysfsvbd);	for(dp = readdir(priv->sysfsvbd); dp != NULL ;	    dp = readdir(priv->sysfsvbd)) {		xenstat_domain *domain;		xenstat_vbd vbd;		unsigned int domid;		int ret;		char buf[256];		ret = sscanf(dp->d_name, "%3s-%u-%u", buf, &domid, &vbd.dev);		if (ret != 3)			continue;		if (strcmp(buf,"vbd") == 0)			vbd.back_type = 1;		else if (strcmp(buf,"tap") == 0)			vbd.back_type = 2;		else			continue;		domain = xenstat_node_domain(node, domid);		if (domain == NULL) {			fprintf(stderr,				"Found interface %s-%u-%u but domain %u"				" does not exist.\n",				buf, domid, vbd.dev, domid);			continue;		}		if((read_attributes_vbd(dp->d_name, "statistics/oo_req", buf, 256)<=0)		   || ((ret = sscanf(buf, "%llu", &vbd.oo_reqs)) != 1))		{			continue;		}		if((read_attributes_vbd(dp->d_name, "statistics/rd_req", buf, 256)<=0)		   || ((ret = sscanf(buf, "%llu", &vbd.rd_reqs)) != 1))		{			continue;		}		if((read_attributes_vbd(dp->d_name, "statistics/wr_req", buf, 256)<=0)		   || ((ret = sscanf(buf, "%llu", &vbd.wr_reqs)) != 1))		{			continue;		}		if (domain->vbds == NULL) {			domain->num_vbds = 1;			domain->vbds = malloc(sizeof(xenstat_vbd));		} else {			domain->num_vbds++;			domain->vbds = realloc(domain->vbds,					       domain->num_vbds *					       sizeof(xenstat_vbd));		}		if (domain->vbds == NULL)			return 0;		domain->vbds[domain->num_vbds - 1] = vbd;	}	return 1;	}/* Free VBD information in handle */void xenstat_uninit_vbds(xenstat_handle * handle){	struct priv_data *priv = get_priv_data(handle);	if (priv != NULL && priv->sysfsvbd != NULL)		closedir(priv->sysfsvbd);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品18久久久久久久久| 欧美在线观看视频一区二区三区 | 成人蜜臀av电影| 欧美在线观看视频一区二区三区| 亚洲精品一区二区三区在线观看| 一区二区免费在线播放| 国产高清不卡二三区| 日韩一区国产二区欧美三区| 亚洲欧美综合色| 懂色av一区二区三区免费观看| 欧美精品乱人伦久久久久久| 亚洲欧美日韩电影| 高清beeg欧美| 久久久噜噜噜久噜久久综合| 人人精品人人爱| 欧美片网站yy| 亚洲福利视频三区| 色成人在线视频| 亚洲人成网站在线| 成a人片国产精品| 久久久久久久久久久久久夜| 久久 天天综合| 精品国产乱码久久久久久1区2区| 蜜臀av国产精品久久久久| 欧美午夜精品一区二区三区| 夜夜嗨av一区二区三区中文字幕 | 中文字幕亚洲电影| 成人免费视频caoporn| 久久久久九九视频| 国产成人免费网站| 欧美激情中文字幕一区二区| 国产精品资源在线看| 欧美精品一区二区三| 国产在线不卡一区| 日本一区二区三区在线观看| 国产精品亚洲午夜一区二区三区| 久久婷婷成人综合色| 国产**成人网毛片九色| 中文字幕免费在线观看视频一区| 丁香五精品蜜臀久久久久99网站| 中国色在线观看另类| 91色porny| 婷婷开心激情综合| 精品国产一区二区精华| 国产91露脸合集magnet| 亚洲免费成人av| 欧美三级中文字幕| 久久成人羞羞网站| 亚洲国产精品成人综合 | 亚洲成人精品一区二区| 欧美军同video69gay| 美女一区二区视频| 国产精品毛片高清在线完整版| 亚洲国产一区二区视频| 91免费视频网址| 亚洲成人自拍偷拍| 日韩精品一区二区三区在线观看| 国产精品自拍网站| 洋洋成人永久网站入口| 欧美一区二区免费视频| 成人伦理片在线| 午夜欧美在线一二页| 精品粉嫩aⅴ一区二区三区四区| 成人午夜在线免费| 视频一区二区三区入口| 日本一区二区动态图| 欧美日韩免费一区二区三区| 国产一区二区三区四区五区入口| 中文字幕一区二区三区av| 777久久久精品| 99久久精品费精品国产一区二区| 日韩和的一区二区| 国产精品午夜在线| 91精品国产一区二区三区香蕉| 国产98色在线|日韩| 日韩va亚洲va欧美va久久| 国产精品视频一二三| 欧美精品久久一区| 不卡的av中国片| 蜜桃av噜噜一区| 亚洲成人av在线电影| 中文字幕中文字幕一区| 亚洲精品一区二区三区影院| 欧美日韩成人一区| 色综合久久九月婷婷色综合| 国产在线国偷精品免费看| 香蕉成人伊视频在线观看| 亚洲人成网站精品片在线观看| 欧美精品一区二区不卡| 欧美一区二区三区小说| 欧美私模裸体表演在线观看| va亚洲va日韩不卡在线观看| 国产美女在线观看一区| 日本强好片久久久久久aaa| 亚洲精品久久7777| ●精品国产综合乱码久久久久| 久久久久久久性| 精品奇米国产一区二区三区| 欧美色电影在线| 在线观看一区不卡| 色婷婷久久99综合精品jk白丝| 白白色 亚洲乱淫| 国产精品一区在线| 国模套图日韩精品一区二区| 青青草原综合久久大伊人精品 | 国产精品福利一区二区三区| 337p粉嫩大胆色噜噜噜噜亚洲| 91精选在线观看| 在线播放一区二区三区| 欧美这里有精品| 在线亚洲+欧美+日本专区| 色先锋久久av资源部| 一本色道久久综合亚洲aⅴ蜜桃| 91免费看`日韩一区二区| av在线这里只有精品| 成人动漫在线一区| gogogo免费视频观看亚洲一| 成人av动漫在线| 日本韩国一区二区三区视频| 欧美三级午夜理伦三级中视频| 欧美日韩国产首页| 日韩精品一区二区三区在线播放| 欧美mv日韩mv国产网站app| 久久这里只有精品首页| 中文字幕免费一区| 亚洲久本草在线中文字幕| 亚洲一区中文在线| 日韩va欧美va亚洲va久久| 美女mm1313爽爽久久久蜜臀| 精品一区二区免费视频| 国产精华液一区二区三区| www.色精品| 欧美中文一区二区三区| 欧美一区二区三区白人| 国产人久久人人人人爽| 亚洲乱码中文字幕| 美国精品在线观看| 成人免费毛片嘿嘿连载视频| 色综合久久久久网| 欧美一级免费观看| 2024国产精品| 亚洲免费av观看| 免费久久精品视频| 99精品国产视频| 日韩一区二区三区视频在线观看| 久久综合久久综合久久| 亚洲狼人国产精品| 国产综合色视频| 在线观看一区二区视频| 日韩欧美国产一区在线观看| 中文字幕一区av| 久久精品国产在热久久| 一本色道久久综合精品竹菊| 日韩区在线观看| 亚洲精品中文字幕乱码三区 | 久久久99精品免费观看| 亚洲色欲色欲www在线观看| 日本中文字幕一区二区视频| jiyouzz国产精品久久| 欧美一区三区四区| 日韩一区日韩二区| 久久91精品久久久久久秒播| 欧洲一区在线电影| 欧美国产日韩精品免费观看| 另类小说综合欧美亚洲| 欧美三级乱人伦电影| 国产精品视频麻豆| 久久国产夜色精品鲁鲁99| 91玉足脚交白嫩脚丫在线播放| 精品国产一区二区三区久久久蜜月 | 中文字幕综合网| 国产麻豆精品95视频| 3d动漫精品啪啪一区二区竹菊| 亚洲毛片av在线| av不卡在线播放| 久久精品视频在线看| 麻豆精品一区二区| 欧美欧美欧美欧美首页| 一区二区三区四区av| 成人免费视频caoporn| 久久久91精品国产一区二区精品| 免费观看在线综合色| 精品视频在线免费| 一区二区三区色| 色久优优欧美色久优优| 亚洲欧美综合在线精品| av动漫一区二区| 国产精品久久久久久久久久久免费看 | 一区二区三区在线视频观看| 国产剧情一区在线| 久久久影院官网| 精品伊人久久久久7777人| 日韩欧美国产综合一区| 青青草国产精品亚洲专区无| 91精品国产综合久久久久| 午夜激情一区二区三区| 欧美日韩精品一区视频| 亚洲亚洲精品在线观看| 欧美色欧美亚洲另类二区| 亚洲18色成人|