참고. OS 프레임워크(Framework) 주요 함수들

원본 :  http://kkamagui.springnote.com/pages/348969

 

들어가기 전에...

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 데이터를 씀

 

 

 

 

 

 

 

.

이 글은 스프링노트에서 작성되었습니다.

+ Recent posts