From a5e06d2b937d0f8d78f30a2ab71a58015c9e7e2c Mon Sep 17 00:00:00 2001 From: root Date: Mon, 13 Jan 2025 20:14:30 -0500 Subject: [PATCH] Added Makefile, cleaned up some C code --- Makefile | 33 +++++++++++++++++++++++++++++++++ proxmon | Bin 0 -> 17432 bytes src/exampledir.c | 33 --------------------------------- src/proxmon.c | 4 ++-- src/server.c | 15 ++++++++++----- 5 files changed, 45 insertions(+), 40 deletions(-) create mode 100644 Makefile create mode 100755 proxmon delete mode 100644 src/exampledir.c diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..49fbbbe --- /dev/null +++ b/Makefile @@ -0,0 +1,33 @@ + +CC = gcc +OUT_DIR = ./build +TARGET = proxmon +SRC_DIRS = ./src + +# Collect all C source files in the current directory +SRCS := $(shell find $(SRC_DIRS) -name '*.c') + +# Generate object files in the build directory +OBJS := $(patsubst $(SRC_DIRS)/%.c, $(OUT_DIR)/%.o, $(SRCS)) + +INC_DIRS := /usr/src/linux-headers-$(uname -r)/include +INC_DIRS := $(shell find $(SRC_DIRS) -type d) $(INC_DIRS) +INC_FLAGS := $(addprefix -I,$(INC_DIRS)) + +CCFLAGS := $(INC_FLAGS) + +$(OUT_DIR): + @mkdir -p $@ + +$(OUT_DIR)/%.o: $(SRC_DIRS)/%.c | $(OUT_DIR) + $(CC) $(CCFLAGS) -c $< -o $@ + +$(TARGET): $(OBJS) + $(CC) $(CCFLAGS) $(OBJS) -o $@ + +.PHONY: all clean +all: $(TARGET) + +clean: + @rm -rf $(TARGET) $(OUT_DIR) + diff --git a/proxmon b/proxmon new file mode 100755 index 0000000000000000000000000000000000000000..b34e29152b5f95367244fe1612cae386f4014152 GIT binary patch literal 17432 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 -#include - -int main(int argc, char *argv[]) { - struct dirent *pDirent; - DIR *pDir; - - // Ensure correct argument count. - - if (argc != 2) { - printf("Usage: testprog \n"); - return 1; - } - - // Ensure we can open directory. - - pDir = opendir(argv[1]); - if (pDir == NULL) { - printf("Cannot open directory '%s'\n", argv[1]); - return 1; - } - - // Process each entry. - - while ((pDirent = readdir(pDir)) != NULL) { - printf("[%s]\n", pDirent->d_name); - } - - // Close directory and exit. - - closedir(pDir); - return 0; -} \ No newline at end of file diff --git a/src/proxmon.c b/src/proxmon.c index cea025b..36017ad 100644 --- a/src/proxmon.c +++ b/src/proxmon.c @@ -2,11 +2,11 @@ #include #include -int main(int argc, char *argv[]) { +int main3(int argc, char *argv[]) { DIR *procdir = opendir("/proc"); struct dirent *pDirent; while ((pDirent = readdir(procdir)) != NULL) { printf("[%s]\n", pDirent->d_name); } -} \ No newline at end of file +} diff --git a/src/server.c b/src/server.c index d84b11d..4b2d939 100644 --- a/src/server.c +++ b/src/server.c @@ -8,6 +8,7 @@ #include #include #include +#include #include "process.h" static inline uint64_t fast_str2ull(char** str) { @@ -71,13 +72,14 @@ int parseStatFile(Process *proc, char *filedata) { location = strchr(location, ' ') + 1; // skip [7 - 14) - skipRange(7, 9); + skipRange(7,14); + //skipRange(7, 9); // (9) flags - %u - proc->iskernel = fast_str2ull(&location) & PS_KTHREAD; - location += 1; + //proc->iskernel = fast_str2ull(&location) & PF_KTHREAD; + //location += 1; - skipRange(10, 14); + //skipRange(10, 14); // (14) utime - %lu proc->cpuTime = fast_str2ull(&location); @@ -172,7 +174,10 @@ int main(int argc, char *argv[]) { cur = head; while (cur != NULL) { printf("proc_cpu_time{pid=\"%d\",ppid=\"%d\",label=\"%s\"} %d\n", cur->pid, cur->ppid, cur->label, cur->cpuTime); - cur = cur->next; + printf("proc_child_cpu_time{pid=\"%d\",ppid=\"%d\",label=\"%s\"} %d\n", cur->pid, cur->ppid, cur->label, cur->childCpuTime / clocks); + printf("proc_num_threads{pid=\"%d\",ppid=\"%d\",label=\"%s\"} %d\n", cur->pid, cur->ppid, cur->label, cur->nThreads); + printf("proc_resident_bytes{pid=\"%d\",ppid=\"%d\",label=\"%s\"} %d\n", cur->pid, cur->ppid, cur->label, cur->resident); + cur = cur->next; } // Close directory and exit.