My Project
Loading...
Searching...
No Matches
kernel_engine.h
Go to the documentation of this file.
1/*
2 * Advanced Kernel Engine Implementation
3 *
4 * Maintainer: Azabell1993 Github master
5 * Created : 2024-09-04
6 *
7 * Purpose : Implements advanced kernel operations, including
8 * thread/process management, error handling, synchronization
9 * mechanisms, and data structures.
10 */
11
12#pragma once
13#ifndef ENGINE_H
14#define ENGINE_H
15
16#include <pthread.h>
17#include <semaphore.h>
18#include <stdarg.h>
19#include <stdbool.h>
20#include <errno.h>
21#include <stdio.h>
22#include <stdlib.h>
23#include <string.h>
24#include <unistd.h>
25#include <sys/wait.h>
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
36static pthread_mutex_t print_mutex = PTHREAD_MUTEX_INITIALIZER;
37
44void safe_kernel_printf(const char *format, ...);
45
52typedef struct Node {
53 void* data;
54 struct Node* next;
56
68
75
82void push(LinkedList* list, void* data);
83
90void* pop(LinkedList* list);
91
99bool is_empty(LinkedList* list);
100
107
114void create_threads(int num_threads, ...);
115
121void create_single_process(void (*func)());
122
129void create_multi_processes(int num_processes, ...);
130
137sem_t* init_semaphore(int value);
138
144pthread_mutex_t* init_mutex();
145
152void kernel_errMsg(const char *format, ...);
153
160void kernel_errExit(const char *format, ...);
161
169void kernel_errExitEN(int errnum, const char *format, ...);
170
177void kernel_fatal(const char *format, ...);
178
185void kernel_usageErr(const char *format, ...) __attribute__ ((__noreturn__));
186
193void kernel_cmdLineErr(const char *format, ...) __attribute__ ((__noreturn__));
194
201void* semaphore_thread(void* arg);
202
209void* mutex_thread(void* arg);
210
218void run_multithreading(int num_threads, int use_semaphore, ...);
219
220#ifdef __cplusplus
221}
222#endif
223
224#endif // ENGINE_H
sem_t * init_semaphore(int value)
세마포어 초기화 함수 선언
void run_multithreading(int num_threads, int use_semaphore,...)
멀티스레드 실행 함수 선언 (쓰레드 수 및 동기화 방법을 입력받음)
void kernel_cmdLineErr(const char *format,...) __attribute__((__noreturn__))
커맨드 라인 오류 처리 함수 선언
void push(LinkedList *list, void *data)
연결 리스트에 요소 추가 함수 선언
void kernel_errExit(const char *format,...)
커널 오류 종료 함수 선언
bool is_empty(LinkedList *list)
연결 리스트가 비었는지 확인하는 함수 선언
void * semaphore_thread(void *arg)
세마포어를 사용하는 스레드 작업 함수 선언
void create_multi_processes(int num_processes,...)
다중 프로세스 생성 함수 선언
struct Node Node
void create_threads(int num_threads,...)
스레드 생성 함수 선언
struct LinkedList LinkedList
void * pop(LinkedList *list)
연결 리스트에서 요소 제거 함수 선언
void kernel_fatal(const char *format,...)
커널 치명적 오류 함수 선언
void create_single_process(void(*func)())
단일 프로세스 생성 함수 선언
void kernel_errExitEN(int errnum, const char *format,...)
커널 오류 종료 함수 선언 (오류 번호 사용)
void kernel_errMsg(const char *format,...)
커널 오류 메시지 출력 함수 선언
LinkedList * create_linkedlist()
연결 리스트 생성 함수 선언
void safe_kernel_printf(const char *format,...)
스레드 안전한 출력 함수 선언
void * mutex_thread(void *arg)
뮤텍스를 사용하는 스레드 작업 함수 선언
void kernel_usageErr(const char *format,...) __attribute__((__noreturn__))
커널 사용법 오류 함수 선언
pthread_mutex_t * init_mutex()
뮤텍스 초기화 함수 선언
void destroy_linkedlist(LinkedList *list)
연결 리스트 삭제 함수 선언
연결 리스트를 정의하는 구조체
연결 리스트의 노드를 정의하는 구조체
void * data
struct Node * next