资源简介
用在嵌入式linux平台上,通常busybox的top无法看到多线程应用的每个线程的cpu占用率,特地编写了这个小工具.
代码片段和文件信息
/*****************************************************************************/
// /opt/t500/tools/uclibc/bin/mips-uclibc-gcc -static -o mytop2 mytop2.c
/*
* cpu.c -- simple CPU usage reporting tool.
*
* (C) Copyright 2000 Greg Ungerer (gerg@lineo.com)
*/
/*****************************************************************************/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define VALID_PROCSTATE 0xa84b62fc
struct procState
{
char procname[32];
FILE * fp;
int pid;
unsigned int utimeold;
unsigned int utimenew;
unsigned int stimeold;
unsigned int stimenew;
unsigned int allold;
unsigned int allnew;
int valid;
};
#define MAX_THREADS_NUM 100
struct procState lanProc[MAX_THREADS_NUM];
int procTotal=0;
char targetProcName[64]=““;
int targetProcPid=0;
char taskName[64]=““;
FILE *taskfp;
FILE *statfp;
char *version = “1.0.0“;
char *procdevice = “/proc/stat“;
struct dirent *taskdirent;
DIR * taskdir;
struct stats
{
unsigned int user;
unsigned int nice;
unsigned int system;
unsigned int idle;
unsigned int total;
};
void readprocessstat( void );
int getdata(struct stats *st)
{
unsigned char buf[80];
int i;
for(i=0;i {
if ((lanProc[i].fp = fopen(lanProc[i].procname“r“)) == NULL) {
fprintf(stderr “ERROR: failed errno=%d\n“ errno);
exit(-1);
}
fscanf(lanProc[i].fp “%d %s %s %s %s %s %s %s %s %s %s %s %s %lu %lu“ &lanProc[i].pid
&buf[0]&buf[0]&buf[0]&buf[0]&buf[0]&buf[0]&buf[0]&buf[0]&buf[0]&buf[0]&buf[0]&buf[0]
&lanProc[i].utimenew&lanProc[i].stimenew);
fclose(lanProc[i].fp);
}
if ((statfp = fopen(procdevice “r“)) == NULL) {
fprintf(stderr “ERROR: failed to open %s errno=%d\n“
procdevice errno);
exit(0);
}
fscanf(statfp “%s %d %d %d %d“ &buf[0] &st->user &st->nice&st->system &st->idle);
fclose(statfp);
st->total = st->user + st->nice + st->system + st->idle;
for(i=0;i {
lanProc[i].allnew = lanProc[i].utimenew + lanProc[i].stimenew;
}
return(0);
}
void usage(FILE *fp int rc)
{
fprintf(fp “Usage: cpu [-h?ra] [-s seconds] [-c count] “
“[-d ]\n\n“);
fprintf(fp “ -h? this help\n“);
- 上一篇:昆明理工复试经验
- 下一篇:斯坦福大学公开课 《机器学习课程》带中英字幕链接
相关资源
- Linux下多线程判断九宫格是否有效
- 消消乐自动求解
- libevent多线程
- 多线程字符串代码文件搜索器
- 多线程读者阅览室课程设计
- 多线程自动化syn&udp flood攻击集成工具
- 实现一个数据单元,包括学号和姓名
- vc定时器和多线程的简单应用
- 面向对象与多线程综合实验报告
- 易语言多线程获取网络时间源码
- 基于多线程和SOCKET聊天室V05
- 使用多线程技术,模拟通过四个窗口
- 关于QT多线程子线程使用信号和槽
- linux上实现多进程和多线程实现同步互
- 进程cpu占用率和内存使用大小获取
- 理发师问题的实现
- Qt界面多线程opencv调用摄像头
- 智慧大棚QT界面设计
- 多线程获取kinect2.0 视频并保存身体点
- Socket和多线程的聊天室
- 基于Linux的消息队列及多线程编程实现
- 一个简单的基于TCP的多线程聊天程序
- GTK多线程聊天工具
- delphi写的自动升级演示 多线程+http服
- dpdk的多线程抓包使用方式
- 京东多线程版易语言源码
- linux C 多线程编程典型
- Qt 多线程及简单 demo
- delphi7 多线程测试40个线程
- 多线程http服务器实现流程图
评论
共有 条评论