Compare commits

..

10 Commits

5 changed files with 171 additions and 193 deletions

View File

@ -1,14 +1,10 @@
CMAKE_MINIMUM_REQUIRED(VERSION 3.24) CMAKE_MINIMUM_REQUIRED(VERSION 3.24)
SET(CMAKE_BUILD_TYPE Debug)
SET(CMAKE_C_STANDARD 23) SET(CMAKE_C_STANDARD 23)
SET(CMAKE_C_STANDARD_REQUIRED TRUE) SET(CMAKE_C_STANDARD_REQUIRED TRUE)
PROJECT(synf-core) PROJECT(synf-core)
ADD_EXECUTABLE(main ADD_EXECUTABLE(main source/main.c source/lib.c)
source/main.c
source/lib.c
)
TARGET_INCLUDE_DIRECTORIES(main PRIVATE source/lib/osx source/lib/linux)

View File

@ -1,4 +1,10 @@
#include "lib.h" /*
*
* Author: nasr
* Year: 2025-2026
*
*/
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <stddef.h> #include <stddef.h>
@ -6,46 +12,40 @@
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include <sys/types.h> #include <sys/types.h>
#include <string.h>
#include "types.h" #include "types.h"
#include "lib.h"
#define MAXC 1024 #define MAXC 1024
#define MAXC_CHAR 256 #define MAXC_CHAR 256
#define CONVERT_BYTES_TO_GIGABYTES 107374182 #define CONVERT_BYTES_TO_GIGABYTES 107374182
#define D 1073741824 #define D 1073741824
/*
* prototype function declarations
* cpu, ram, disk, device
*
*/
void cpu_name(); void cpu_name();
void cpu_threads(); void cpu_threads();
void cpu_temperature(); void cpu_temperature();
void cpu_frequency(); void cpu_frequency();
void get_total(); void get_total();
void get_usage(); void get_usage();
void mem_size(); void mem_size();
void av_mem_size(); void av_mem_size();
void device_up_time(); void device_up_time();
void device_os_version(); void device_os_version();
void device_hostname(); void device_hostname();
void device_model(); void device_model();
void init_device();
#ifdef __gnu_linux__ #ifdef __gnu_linux__
#include <sys/sysinfo.h> #include <sys/sysinfo.h>
void init_device() {
device_s _device; void cpu_name() {
_device.&name = device_model();
_device.&hostname =
}
void cpu_name(){
int buffer_size = 256; int buffer_size = 256;
char cpu_name[buffer_size]; char cpu_name[buffer_size];
@ -70,7 +70,7 @@ void cpu_name(){
} }
} }
_cpu.name = cpu_name; u_cpu->name = cpu_name;
} }
@ -80,7 +80,7 @@ void cpu_frequency() {
FILE *fp = fopen("/proc/cpuinfo", "r"); FILE *fp = fopen("/proc/cpuinfo", "r");
if (!fp) { if (!fp) {
printf("can't open /proc/cpuinfo"); printf("can't open /proc/cpuinfo");
return NULL; return;
} }
while (fgets(buffer, MAXC_CHAR, fp)) { while (fgets(buffer, MAXC_CHAR, fp)) {
@ -95,57 +95,43 @@ void cpu_frequency() {
} }
fclose(fp); fclose(fp);
return buffer; u_cpu->frequency = buffer;
} }
return NULL; return;
} }
unsigned long get_total(){ void mem_size() {
struct sysinfo info; struct sysinfo info;
if (sysinfo(&info) != 0) { if (sysinfo(&info) != 0) {
perror("sysinfo"); perror("sysinfo");
return 1; return;
} }
long total_ram = info.totalram * info.mem_unit; long total_ram = info.totalram * info.mem_unit;
return total_ram; u_ram->total = total_ram;
} }
void mem_size(){
void mem_av_size() {
struct sysinfo info; struct sysinfo info;
if (sysinfo(&info) != 0) { if (sysinfo(&info) != 0) {
perror("sysinfo"); perror("sysinfo");
return 1;
}
long total_ram = info.totalram * info.mem_unit;
return total_ram;
}
void av_mem_size()
{
struct sysinfo info;
if (sysinfo(&info) != 0) {
perror("sysinfo");
return 1;
} }
long total_ram = info.totalram * info.mem_unit; long total_ram = info.totalram * info.mem_unit;
long free_ram = info.freeram * info.mem_unit; long free_ram = info.freeram * info.mem_unit;
return total_ram - free_ram; u_ram->available = free_ram;
} }
void cpu_temperature() void cpu_temperature() {
{
int delay = 0;
while (1) while (1)
{ {
sleep(delay); sleep(delay);
@ -165,27 +151,41 @@ void cpu_temperature()
} }
} }
unsigned long get_usage()
{
struct sysinfo info;
if (sysinfo(&info) != 0) { void device_up_time() {
perror("sysinfo");
return 1;
}
long total_ram = info.totalram * info.mem_unit;
long free_ram = info.freeram * info.mem_unit;
return total_ram - free_ram;
}
unsigned long device_up_time(){
struct sysinfo info; struct sysinfo info;
if (sysinfo(&info) == -1) if (sysinfo(&info) == -1)
perror("sysinfo"); perror("sysinfo");
return info.uptime; u_device->uptime = info.uptime;
}
void device_model() {
return;
}
void cpu_threads() {
return;
}
void get_total() {
}
void get_usage() {
}
void device_os_version() {
} }
#endif #endif
@ -196,51 +196,52 @@ unsigned long device_up_time(){
void cpu_name() { void cpu_name() {
char *name; char *name = NULL;
size_t len = 0; size_t len = 0;
if (sysctlbyname("machdep.cpu.brand_string", NULL, &len, NULL, 0) < 0) if (sysctlbyname("machdep.cpu.brand_string", NULL, &len, NULL, 0) < 0){
perror("errorn in assigning the size for the cpu name variable\n");
perror("error in assigning the size for the cpu name variable\n");
return;
}
name = malloc(len); name = malloc(len);
if (name == NULL) {
perror("malloc failed");
return;
}
if(sysctlbyname("machdep.cpu.brand_string", name, &len, NULL, 0) < 0){ if(sysctlbyname("machdep.cpu.brand_string", name, &len, NULL, 0) < 0){
perror("error in assigning the value to the cpu name variable\n"); perror("error in assigning the value to the cpu name variable\n");
free(name); free(name);
return; return;
} }
_cpu.name = name; u_cpu->name = name;
return;
} }
void cpu_threads() { void cpu_threads() {
int count; int count;
size_t len = sizeof(count); size_t len = sizeof(count);
if (sysctlbyname("machdep.cpu.thread_count", &count, &len, NULL, 0) < 0) if (sysctlbyname("machdep.cpu.thread_count", &count, &len, NULL, 0) < 0){
perror("error in retrieving the cpu threads count\n"); perror("error in retrieving the cpu threads count\n");
_cpu.threads = count;
return; return;
}
void cpu_frequency(){
uint64_t freq = 0;
size_t size = sizeof(freq);
if (sysctlbyname("hw.cpufrequency", &freq, &size, NULL, 0) < 0)
{
perror("sysctl");
} }
return;
u_cpu->threads = count;
} }
void cpu_temperature(cpu_s cpu) void cpu_frequency() {
{ // assigning a value of 0, value not available on macos
cpu.temperature = 0; u_cpu->frequency = 0;
return;
}
void cpu_temperature() {
// assigning a value of 0, value not available on macos
u_cpu->temperature = 0;
} }
void mem_size() { void mem_size() {
@ -249,7 +250,7 @@ void mem_size() {
if (sysctlbyname("hw.memsize", &size, &len, NULL, 0) < 0) if (sysctlbyname("hw.memsize", &size, &len, NULL, 0) < 0)
perror("error in retrieving the memory size"); perror("error in retrieving the memory size");
_ram.total = size / D; u_ram->total = size / D;
} }
void mem_av_size() { void mem_av_size() {
@ -258,7 +259,16 @@ void mem_av_size() {
if (sysctlbyname("hw.memsize_usable", &size, &len, NULL, 0) < 0) if (sysctlbyname("hw.memsize_usable", &size, &len, NULL, 0) < 0)
perror("error in retrieving the available memory size"); perror("error in retrieving the available memory size");
_ram.available = size / D; u_ram->available = size / D;
}
void get_total() {
}
void get_usage() {
} }
void device_hostname(){ void device_hostname(){
@ -277,7 +287,7 @@ void device_hostname(){
return ; return ;
} }
_device.name = name; u_device->name = name;
return ; return ;
} }
@ -309,14 +319,13 @@ void device_model(){
return; return;
} }
_device.name = model_name; u_device->name = model_name;
return;
} }
void device_os_version() { void device_os_version() {
char *os_version; char *os_version = NULL;
size_t size = 0; size_t size = 0;
if (sysctlbyname("kern.ostype", NULL, &size, NULL, 0) < 0) if (sysctlbyname("kern.ostype", NULL, &size, NULL, 0) < 0)
@ -330,21 +339,7 @@ void device_os_version() {
return ; return ;
} }
_device.os_version = os_version; u_device->os_version = os_version;
return;
} }
void init_device() {
device_s _device;
_device.name = device_model();
_device.hostname =
}
#endif #endif

View File

@ -1,16 +1,16 @@
#ifndef LIB_H #ifndef LIB_H
#define LIB_H #define LIB_H
#include "types.h" #include "types.h"
#ifdef __APPLE__
void cpu_name(cpu_s cpu); void cpu_name();
void cpu_threads(); void cpu_threads();
void cpu_temperature(); void cpu_temperature();
void cpu_frequency(); void cpu_frequency();
void disk_size(); void get_total();
void size(); void get_usage();
void av_size(); void av_size();
void ram_info(); void ram_info();
@ -18,9 +18,10 @@ void ram_info();
void mem_size(); void mem_size();
void mem_av_size(); void mem_av_size();
void get_device_info(); void device_os_version();
void get_os_version(); void device_model();
void device_up_time();
void device_model();
#endif #endif
#endif

View File

@ -1,85 +1,68 @@
#include <pthread.h> #include <pthread.h>
#include <curl/curl.h>
#include <cjson/cJSON.h>
#include "lib.h"
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include "types.h"
#include "lib.h"
void *gather_cpu_information(); cpu_s *u_cpu;
void *gather_ram_information(); ram_s *u_ram;
void *gather_disk_information(); disk_s *u_disk;
void *gather_device_information(); device_s *u_device;
void get_c_version();
/* void init() {
cJSON convert_to_json() {
cJSON *root = cJSON_CreateObject(); u_cpu = malloc( sizeof(cpu_s) );
cJSON_AddStringToObject(root, "cpu", info.cpu->name); u_ram = malloc(sizeof(ram_s));
cJSON_AddNumberToObject(root, "ram", info.ram->total); u_disk = malloc(sizeof(disk_s));
cJSON_AddStringToObject(root, "disk", info.disk->name); u_device = malloc(sizeof(device_s));
cJSON_AddStringToObject(root, "device", info.device->name);
return *root; cpu_name();
cpu_frequency();
cpu_threads();
cpu_temperature();
mem_size();
mem_av_size();
get_total();
get_usage();
device_os_version();
device_model();
device_up_time();
device_model();
}
void end() {
free(u_cpu);
free(u_ram);
free(u_disk);
free(u_device);
}
int main() {
init();
printf("temperature: %d\nfrequency: %s\nname: %s\nthreads: %d\n", u_cpu->temperature, u_cpu->frequency, u_cpu->name, u_cpu->threads);
printf("total: %ld\navailable: %ld\n", u_ram->total, u_ram->available);
printf("device name:%s\ndevice hostname:%s\nos version: %s\nuptime: %d\n", u_device->name, u_device->hostname, u_device->os_version, u_device->uptime);
while(1) {
char *input = malloc(sizeof(char *));
if(scanf("%s\n", input)) {
}
} }
void handler(char *url) { end();
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(curl, CURLOPT_URL, url);
// TO DO
// parse the object to a json and pass that as an argument to post it
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, NULL);
res = curl_easy_perform(curl);
if (res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
curl_easy_cleanup(curl);
}
curl_global_cleanup();
}
*/
void get_c_version()
{
#if __STDC_VERSION__
printf("C standard version: %ld\n", __STDC_VERSION__);
#else
printf("C standard not defined\n");
#endif
}
#ifdef __APPLE__
int main(int argc, char** argv) {
return 0; return 0;
} }
#endif
#ifdef __gnu_linux
int main(int argc, char** argv) {
return 0;
}
#endif

View File

@ -4,20 +4,20 @@
typedef struct { typedef struct {
char* name; char* name;
int frequency; char* frequency;
int temperature; int temperature;
int threads; int threads;
} cpu_s; } cpu_s;
typedef struct { typedef struct {
unsigned long total; long int total;
unsigned long available; long int available;
} ram_s; } ram_s;
typedef struct { typedef struct {
long long size; long size;
short name; char *name;
} disk_s; } disk_s;
typedef struct { typedef struct {
@ -26,12 +26,15 @@ typedef struct {
char *hostname; char *hostname;
char *os_version; char *os_version;
int uptime; int uptime;
cpu_s cpu;
ram_s ram;
disk_s disk;
} device_s; } device_s;
extern cpu_s *u_cpu ;
extern ram_s *u_ram ;
extern disk_s *u_disk ;
extern device_s *u_device ;
#endif #endif