Clubcos  0.0.0
Clubcos - Clubc Operating System
 모두 데이타 구조 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 매크로 페이지들
gdt.h 파일 참조
#include <stddef.h>
#include <stdint.h>
#include "memory_map.h"
gdt.h에 대한 include 의존 그래프
이 그래프는 이 파일을 직/간접적으로 include 하는 파일들을 보여줍니다.:

이 파일의 소스 코드 페이지로 가기

데이타 구조

struct  tagGdt
 GDT를 나타내는 구조체입니다. 더 자세히 ...
 

매크로

#define NULL_SEGMENT   0
 NULL 세그먼트 셀렉터입니다. 더 자세히 ...
 
#define KERNEL_DATA_SEGMENT   (1 * 8)
 커널 데이터 세그먼트 셀렉터입니다. 더 자세히 ...
 
#define KERNEL_CODE_SEGMENT   (2 * 8)
 커널 코드 세그먼트 셀렉터입니다. 더 자세히 ...
 
#define MAKE_GDT_TYPE1(SegmentType, S, DPL, P)   ((((P) << 7) & 0x80) | (((DPL) << 5) & 0x60) | (((S) << 4) & 0x10) | ((SegmentType) & 0x0f))
 GdtType1 을 조립하는 매크로 함수입니다. 더 자세히 ...
 
#define MAKE_DATA_SEGMENT(expdown, writable)   (((((expdown) << 2) & 0x04) | (((writable) << 1) & 0x02)) & 0x06)
 데이터 세그먼트의 SegmentType을 조립하는 매크로 함수입니다. 더 자세히 ...
 
#define MAKE_CODE_SEGMENT(conforming, readable)   ((((((conforming) << 2) & 0x04) | (((readable) << 1) & 0x02)) | 0x08) & 0x0e)
 데이터 세그먼트의 SegmentType을 조립하는 매크로 함수입니다. 더 자세히 ...
 
#define DATA_SEGMENT_TYPE   MAKE_DATA_SEGMENT(0,1)
 Clubcos가 사용하는 데이터 세그먼트의 SegmentType입니다. 더 자세히 ...
 
#define CODE_SEGMENT_TYPE   MAKE_CODE_SEGMENT(0,1)
 Clubcos가 사용하는 코드 세그먼트의 SegmentType입니다. 더 자세히 ...
 

타입정의

typedef uint8_t GdtType1
 Gdt 구조체를 참조하십시오. 더 자세히 ...
 
typedef uint8_t GdtType2
 Gdt 구조체를 참조하십시오. 더 자세히 ...
 
typedef struct tagGdt Gdt
 GDT를 나타내는 구조체입니다. 더 자세히 ...
 

함수

void ckGdtInit (Gdt *pGdt, uint32_t address, uint32_t size, GdtType1 type1)
 Gdt 구조체를 초기화합니다. 더 자세히 ...
 
void ckGdtLoad (uint16_t size, Gdt *address)
 lgdt 명령어로 GDT 테이블을 로드합니다. 더 자세히 ...
 
void ckGdtTableInitialize (void)
 GDT 테이블을 초기화합니다. 더 자세히 ...
 

상세한 설명

날짜
2014. 4. 27.
작성자
dlarudgus20

매크로 문서화

#define CODE_SEGMENT_TYPE   MAKE_CODE_SEGMENT(0,1)

Clubcos가 사용하는 코드 세그먼트의 SegmentType입니다.

#define DATA_SEGMENT_TYPE   MAKE_DATA_SEGMENT(0,1)

Clubcos가 사용하는 데이터 세그먼트의 SegmentType입니다.

#define KERNEL_CODE_SEGMENT   (2 * 8)

커널 코드 세그먼트 셀렉터입니다.

#define KERNEL_DATA_SEGMENT   (1 * 8)

커널 데이터 세그먼트 셀렉터입니다.

#define MAKE_CODE_SEGMENT (   conforming,
  readable 
)    ((((((conforming) << 2) & 0x04) | (((readable) << 1) & 0x02)) | 0x08) & 0x0e)

데이터 세그먼트의 SegmentType을 조립하는 매크로 함수입니다.

매개변수
[in]conformingconforming 여부입니다.
[in]readable읽기 가능 여부입니다.
참고
CODE_SEGMENT_TYPE
#define MAKE_DATA_SEGMENT (   expdown,
  writable 
)    (((((expdown) << 2) & 0x04) | (((writable) << 1) & 0x02)) & 0x06)

데이터 세그먼트의 SegmentType을 조립하는 매크로 함수입니다.

매개변수
[in]expdownExpand Down 여부입니다.
[in]writable쓰기 가능 여부입니다.
참고
DATA_SEGMENT_TYPE
#define MAKE_GDT_TYPE1 (   SegmentType,
  S,
  DPL,
 
)    ((((P) << 7) & 0x80) | (((DPL) << 5) & 0x60) | (((S) << 4) & 0x10) | ((SegmentType) & 0x0f))

GdtType1 을 조립하는 매크로 함수입니다.

매개변수
[in]SegmentTypeSegmentType입니다.
[in]S0이면 시스템 세그먼트이고, 1이면 코드/데이터 세그먼트입니다. 항상 1로 해둡니다.
[in]DPL세그먼트의 DPL입니다.
[in]P세그먼트의 present 여부입니다.
참고
DATA_SEGMENT_TYPE
CODE_SEGMENT_TYPE
#define NULL_SEGMENT   0

NULL 세그먼트 셀렉터입니다.

타입정의 문서화

typedef struct tagGdt Gdt

GDT를 나타내는 구조체입니다.

typedef uint8_t GdtType1

Gdt 구조체를 참조하십시오.

typedef uint8_t GdtType2

Gdt 구조체를 참조하십시오.

함수 문서화

void ckGdtInit ( Gdt pGdt,
uint32_t  address,
uint32_t  size,
GdtType1  type1 
)

Gdt 구조체를 초기화합니다.

매개변수
[in]pGdt초기화할 Gdt 구조체입니다.
[in]addressGDT가 가리키는 선형 주소입니다.
[in]sizeGDT가 가리키는 메모리의 크기입니다.
[in]type1GDT의 type1입니다.
void ckGdtLoad ( uint16_t  size,
Gdt address 
)

lgdt 명령어로 GDT 테이블을 로드합니다.

asmfunc.asm에 구현부가 있습니다.

void ckGdtTableInitialize ( void  )

GDT 테이블을 초기화합니다.