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