nckernel  0.1
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions
segment.c File Reference
#include <slibc.h>
#include <sys/types.h>
#include <stdio.h>
#include <stddef.h>
#include <string.h>
#include <segment.h>
Include dependency graph for segment.c:

Go to the source code of this file.

Macros

#define GDT_SET(entry, t, d, b, l)
 
#define TSS_SET(entry, d, b, l)
 

Functions

void segment_init (void)
 세그먼테이션 초기화 함수 More...
 
unsigned char * tss_io_bitmap_get (void)
 현재 Task state segment 에 기록된 I/O Bitmap 정보를 가져온다. More...
 
void tss_update_kernel_stack (unsigned long esp)
 TSS 의 커널 레벨 스택 정보를 재 설정한다. More...
 

Macro Definition Documentation

#define GDT_SET (   entry,
  t,
  d,
  b,
 
)
Value:
do { \
unsigned long limit; \
(entry).type = (t); \
(entry).dpl = (d); \
(entry).s = 1; \
(entry).p = 1; \
(entry).avl = 0; \
(entry).zero = 0; \
(entry).size = 1; \
(entry).g = 1; \
(entry).base0 = (b) & 0x0000FFFFu; \
(entry).base1 = ((b) & 0x00FF0000u) >> 16; \
(entry).base2 = ((b) >> 24) & 0x0FFu; \
limit = (entry).g ? ((l) >> 12) : ((l) & 0x000FFFFF); \
(entry).limit0 = limit & 0x0000FFFFu; \
(entry).limit1 = (limit >> 16) & 0x0000000Fu; \
} while (0)

Definition at line 9 of file segment.c.

Referenced by segment_init().

#define TSS_SET (   entry,
  d,
  b,
 
)
Value:
do { \
unsigned long limit; \
(entry).type = 0x09; \
(entry).dpl = (d); \
(entry).p = 1; \
(entry).avl = 0; \
(entry).zero1 = 0; \
(entry).zero2 = 0; \
(entry).g = 0; \
(entry).base_low = (b) & 0x0000FFFF; \
(entry).base_high_low = ((b) & 0x00FF0000) >> 16; \
(entry).base_high_high= ((b) >> 24) & 0x000000FF; \
limit = (entry).g ? ((l) >> 12) : ((l) & 0x000FFFFF); \
(entry).segment_limit_low = limit & 0x0000FFFFu; \
(entry).segment_limit_high = (limit >> 16) & 0x0000000Fu; \
} while (0)

Definition at line 28 of file segment.c.

Referenced by segment_init().