KolibriLib
Loading...
Searching...
No Matches
thread.hpp
1#ifndef __THREAD_H__
2#define __THREAD_H__
3
4#include <stdio.h>
5#include <stdlib.h>
6#include <sys/ksys.h>
7
8namespace KolibriLib
9{
11 namespace Thread
12 {
13
19 unsigned CreateThread(void *ThreadEntry, unsigned ThreadStackSize = 1024)
20 {
21 void* th_stack = malloc(ThreadStackSize);
22 if (!th_stack) // Если памяти не было выделенно
23 {
24 _ksys_debug_puts("Memory allocation error for thread!");
25 return -1;
26 }
27 unsigned TID = _ksys_create_thread(ThreadEntry, th_stack + ThreadStackSize);
28 if (TID == -1) // Если поток небыл создан
29 {
30 _ksys_debug_puts("Unable to create a new thread!");
31 return TID;
32 }
33 return TID;
34 }
35
40 bool TerminateThread(int PID)
41 {
42 int a;
43 asm_inline(
44 "int $0x40"
45 :"=a"(a)
46 :"a"(18), "b"(18), "c"(PID)
47 );
48 if(!a)
49 {
50 return true;
51 }
52 else
53 {
54 return false;
55 }
56 }
57 } // namespace Thread
58
59} // namespace KolibriLib
60
61
62#endif // __THREAD_H__
unsigned CreateThread(void *ThreadEntry, unsigned ThreadStackSize=1024)
Создать поток
Definition thread.hpp:19
bool TerminateThread(int PID)
Завершить процесс/поток
Definition thread.hpp:40
Основное пространство имён
Definition base.hpp:17