From 2f1837a75e96612040c6db2b594adf7463173c88 Mon Sep 17 00:00:00 2001 From: Loïc Guégan Date: Tue, 1 Apr 2025 17:56:32 +0200 Subject: Cleaning repository --- sandbox/pure-read/read.c | 88 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 sandbox/pure-read/read.c (limited to 'sandbox/pure-read/read.c') diff --git a/sandbox/pure-read/read.c b/sandbox/pure-read/read.c new file mode 100644 index 0000000..539933d --- /dev/null +++ b/sandbox/pure-read/read.c @@ -0,0 +1,88 @@ +#include +#include +#include +#include +#include + +#define BUFFER_SIZE 255 +#define IN_MEM (inmem!=0) + +typedef struct power_data { + float power; // Power value + long ts; // Associated timestamp + long nsecs; // Associated nanosecs +} power_data; + +int main(int argc, char *argv[]) +{ + if(argc != 4){ + printf("Usage: %s \n\ + \rFor , see folder name in /sys/kernel/ina260/",argv[0]); + exit(1); + } + + char *deviceid=argv[1]; + int nread=atoi(argv[2]); + int inmem=atoi(argv[3]); + + if(nread<=0){ + printf(" must be greater than 0\n"); + exit(3); + } + + // File to read + char path[255]; + sprintf(path, "/sys/kernel/ina260/%s/power", deviceid); + + // Open file + int fd; + char buff[BUFFER_SIZE]; + fd = open(path, O_RDONLY); + if(fd<0){ + perror(path); + exit(2); + } + + // Check if its in memory reading + power_data *data; + if(IN_MEM){ + data=malloc(sizeof(power_data)*nread); + if(data == NULL){ + perror("Cannot allocate enough memory for in memory reads"); + exit(4); + } + } + + // Perform reads + float power=-1; + struct timespec power_ts; + clock_gettime(CLOCK_REALTIME, &power_ts); + + printf("startat:%ld\n", power_ts.tv_sec); + for(int i=0;i Power is %fW\n",deviceid, power_ts.tv_sec,power_ts.tv_nsec,power); + } + lseek(fd,0,SEEK_SET); + } + close(fd); + + if(IN_MEM){ + // We only print now (most I/O will happend at the end and this must be visible on the results) + for(int i=0;i Power is %fW\n",deviceid, data[i].ts, data[i].nsecs, data[i].power); + } + free(data); + } + printf("endat:%ld\n", time(NULL)); + return 0; +} -- cgit v1.2.3