📄 util-linux.c
字号:
#include "util.h"#include <sys/stat.h>#include <linux/hdreg.h>#include <unistd.h>#include <string.h>#include <stdlib.h>#include <errno.h>#include <fcntl.h>#include <sys/timeb.h>#include <sys/times.h>char def_device[]="/dev/hda";static clock_t clk_sec;int hdd_prepare(){ clk_sec=sysconf(_SC_CLK_TCK); return 0;}int open_hdd(const char*name){ int res; res=open(name,O_RDONLY|O_SYNC); if (res==-1) return res; return res;}void close_hdd(int handle){ close(handle);}int read_hdd(int handle,struct HDD_INFO*info,long_long blk,int count,void*buffer){ int r; lseek64(handle,blk*info->block_size,SEEK_SET); r=read(handle,buffer,count*info->block_size); if (r==-1) return r; return r/info->block_size;}int read_hdd_cur(int handle,struct HDD_INFO*info,int count,void*buffer){ int r; r=read(handle,buffer,count*info->block_size); if (r==-1) return r; return r/info->block_size;}int seek_hdd(int handle,struct HDD_INFO*info,long_long blk){ lseek64(handle,blk*info->block_size,SEEK_SET); return 0;}int get_hdd_info(int handle,struct HDD_INFO*info){ struct stat st; struct hd_geometry geom;// long_long sz;// if (fstat(handle,&st)==-1) return -1;// info->block_size=st.st_blksize;/* sz=lseek64(handle,0,SEEK_END); if (sz==-1) return -1; info->n_blocks=sz/info->block_size;*/ if (ioctl(handle,HDIO_GETGEO,&geom)==-1) return -1; info->n_blocks=(long_long)geom.sectors*geom.cylinders*geom.heads; info->block_size=512; return 0;}void*alloc_hdd_buffer(struct HDD_INFO*info,int nsec){ return malloc(nsec*info->block_size);}void free_hdd_buffer(void*mem,struct HDD_INFO*info,int nsec){ free(mem);}char*hdd_error_msg(){ return strerror(errno);}int get_execution_times(long_long*user,long_long*kernel){ struct tms t; if (times(&t)==(clock_t)-1) return -1; *user=(long_long)t.tms_utime*1000000/clk_sec; *kernel=(long_long)t.tms_stime*1000000/clk_sec; return 0;}long_long get_system_time(){ struct timeb t; if (ftime(&t)==-1) return -1; return (long_long)t.time*1000000L+t.millitm*1000;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -