참고. OS 프레임워크(Framework) 주요 함수들
원본 : http://kkamagui.springnote.com/pages/348969
들어가기 전에...
- 이 글은 kkamagui에 의해 작성된 글입니다.
- 마음껏 인용하시거나 사용하셔도 됩니다. 단 출처(http://kkamagui.tistory.com, http://kkamagui.springnote.com)는 밝혀 주십시오.
- 기타 사항은 mint64os at gmail.com 이나 http://kkamagui.tistory.com으로 보내주시면 반영하겠습니다.
- 상세한 내용은 책 "64비트 멀티코어 OS 구조와 원리"를 참고하기 바랍니다.
0.시작하면서...
커널 제작시 많이 쓰이는 함수들의 목록을 정리하였다.
1.화면 표시 관련
- void kPrintf( char* pcFormat, ... ) : Standard Library의 printf 함수와 비슷한 역할 수행. 지원되는 출력 포맷은 %X, %x, %s, %c가 있음
-
void kPrintchxy_low( DWORD dwX, DWORD dwY, BYTE cCh, DWORD iAttr ) : 화면 x, y 위치에 한 캐릭터를 iAttr로 표시. iAttr에 대한 속성은 FORE_DARKBLACK의 값으로 정의되어있음(DefineMacro.h 파일 참조)
- kPrintchxy( x, y, ch ) : 위 함수의 매크로. iAttr 부분이 FORE_BRIGHTWHITE으로 설정되어 있음
-
void kPrintxyn_low( DWORD dwX, DWORD dwY, char* dwSzStringPtr, DWORD szLen, DWORD iAttr ) : 화면 x, y 위치에 문자열 n개를 iAttr로 표시. iAttr에 대한 속성은 FORE_DARKBLACK의 값으로 정의되어있음(DefineMacro.h 파일 참조)
- kPrintxyn( x, y, str, n ) : 위 함수의 매크로. iAttr 부분이 FORE_BRIGHTWHITE으로 설정되어 있음
-
void kPrintxy_low( DWORD dwSelector, DWORD x, DWORD y, char* dwSzStringPtr, DWORD iAttr ) : 화면 x, y 위치에 문자열(NULL String)을 표시.
- kPrintxy( x, y, str ) : 위 함수의 매크로. iAttr 부분이 FORE_BRIGHTWHITE으로 설정되어 있음
-
void kSetCursor_low( DWORD dwX, DWORD dwY ) : 커서를 x, y 위치로 이동
- void kSetCursor( int iX, int iY ) : 위 함수의 wrapper 함수. Standard Library 내부에 커서 변수를 변경하여 kPrintf() 함수 호출 시 영향을 미침
- void kGetCursor( int* piX, int* piY ) : 현재 커서의 위치를 반환
-
void kScrollDown_low() : 화면을 아래로 한줄 스크롤
- void kScrollDown() : 위 함수의 wrapper 함수. Standard Library 내부에 커서 변수를 변경하여 kPrintf() 함수 호출 시 영향을 미침
-
void kClearScreen_low() : 화면을 삭제
- void kClearScreen() : 위 함수의 wrapper 함수. Standard Library 내부에 커서 변수를 변경하여 kPrintf() 함수 호출 시 영향을 미침
2.키(Keyboard) 입력 관련
- BYTE kGetCh( void ) : 키보드 버퍼에서 키값을 반환. 키가 값이 없을 경우 대기
- BOOL kKbHit( void ) : 키보드 버퍼에 키가 있는지를 반환
3.스케줄링(Scheduling) 관련
- BOOL kSetupTask( PTASK pstTask, void* pfStartAddr, void* pfEndAddr ) : 태스크를 새로 생성할 때 사용. pstTask에는 TASK 구조체, pfStartAddr에는 태스크의 엔트리 포인트, pfEndAddr은 태스크 엔트리 포인트 함수에서 return 했을 때 불려질 함수(태스크 종료시 불리는 함수)를 설정
- void kSwitchTask( void* pvCurTask, void* pvNextTask ) : 현재 태스크를 저장하고 새로운 태스크를 실행할 때 사용. Context Switching 함수
- void kClearInt( void ) : 인터럽트 불가를 설정하는 함수
- void kSetInt( void ) : 인터럽트 가능을 설정하는 함수
- BOOL kLock( BYTE* pbFlag ) : 원자적 연산(Atomic Operation)을 지원하는 함수. pbFlag의 값이 0이면 1로 설정하고 1을 반환하고, 1이면 0을 반환.
- BOOL kUnlock( BYTE* pbFlag ) : 원자적 연산(Atomic Operation)을 지원하는 함수. pbFlag의 값이 1이면 0으로 설정하고 1을 반환하고, 0이면 0을 반환.
4.유틸리티(Utility) 관련
- void kSeedRand( DWORD dwValue ) : 난수 발생을 위한 초기값 설정
- DWORD kRand( void ) : 난수를 반환
- DWORD kGetTickCount( void ) : Tick Count를 반환
- TIME kGetSystemTime( void ) : OS를 부팅한 후 지난 시각을 초와 밀리세컨트의 값으로 반환
- void kSleep( DWORD dwMilliSec ) : 밀리세컨드 동안 Sleep
- int kStrLen( char* pcBuffer ) : 문자열의 길이를 반환
- void kMemSet( void* pvOffset, BYTE bCh, DWORD dwCount ) : 메모리 내용을 초기화
- void kMemCpy( void* pvTargetOffset, void* pvSourceOffset, DWORD dwCount ) : 메모리 내용을 복사
- int kMemCmp( void* pvTargetOffset, void* pvSourceOffset, DWORD dwCount ) : 메모리 내용을 비교
- void kBToA( BYTE bCh, char* pcBuffer ) : Byte의 값을 ASCII로 버퍼로 변환. Buffer의 크기는 최소 2 이상
- void kDToA( DWORD dwValue, char* pcBuffer ) : DWORD의 값을 ASCII로 버퍼에 변환. Buffer의 크기는 최소 8 이상
-
DWORD kGetTotalRAMSize( void ) : 물리 RAM의 총 크기를 반환
5.포트 입출력(Port In/Out) 관련
- BYTE kReadPortB( DWORD dwPort ) : 포트에서 1Byte 읽음
- WORD kReadPortW( DWORD dwPort ) : 포트에서 2Byte 읽음
- void kWritePortB( DWORD dwPort, DWORD bData ) : 포트에 1Byte 데이터를 씀
- void kWritePortW( DWORD dwPort, DWORD dwData ) : 포트에 2Byte 데이터를 씀
.
이 글은 스프링노트에서 작성되었습니다.
'OS Kernel > 32bit OS Framework' 카테고리의 다른 글
참고. Multi Tasking 구현 방법 (0) | 2007.11.17 |
---|---|
참고. BIOS Call을 사용하는 방법들 (0) | 2007.11.17 |
참고. Intel i386 CPU의 16bit->32bit 전환 (0) | 2007.11.17 |
21 OS 프레임워크 소스 릴리즈 (2) | 2007.11.14 |
20 작업환경 설치 (2) | 2007.11.14 |