GCC - C언어 매크로(Macro) -(1)
By Guillermo Austin Kim | 2018년 4월 30일 |
C Macro를 잘 알아두면 편리합니다. Register 설정을 Macro로 관리하면 엄청 편하거든요. 주소를 다 외울 수는 없으니까요. 그리고 일단은 Macro도 argument를 받을 수 있어요. 이런 Macro를 선언해서 쓰는 방법도 여러 가지가 있습니다. Macro는 자주 쓰이는 코드 묶음을 한 개로 쓸 수 있다는 장점이 있어요. 예를 들어서 코드를 짜다 보니까, critical_section_in();ret = io_read ();critical_section_out(); 이라는 부분이 반복되면 계속 위 코드를 입력하기 귀찮겠죠? 이 코드들을 아름답게 하나의 Macro로 만들 수 있습니다. 그러면 #define으로 CRITICAL_IO_IN() 을 선언하는데, 반복되는 부분을 역슬래쉬 "\" 으로
[Linux][GCC]## 매크로 - 심볼 생성
By Guillermo Austin Kim | 2018년 5월 3일 |
리눅스 커널 코드를 읽다 보면 C 코드에는 존재하지 않는 함수를 호출하는 경우가 있습니다. 희한하게도 해당 함수를 아무리 검색해도 찾을 수 없는데 다른 함수에서 아무 문제 없이 호출합니다. 자 그럼 한 가지 예를 들게요. 아래 코드를 보면 end_page_writeback 함수에서 PageReclaim와 ClearPageReclaim 함수를 호출합니다. 이 함수는 페이지 write back 동작을 멈추는 역할을 하는 것으로 보이네요.[mm/filemap.c]void end_page_writeback(struct page *page){ if (PageReclaim(page)) { ClearPageReclaim(page); rotate_reclaimable_page(page); } PageReclaim
[Linux][Kernel] current 매크로 (1)
By Guillermo Austin Kim | 2018년 5월 14일 |
리눅스 커널 코드를 읽다가 current란 매크로를 보신 적이 있나요? 아직 없다고요? 그럼 조금 코드를 읽다 보면 만나게 될 겁니다. 왜냐면 리눅스 커널 코드 구석구석 이 매크로를 쓰고 있거든요. 그럼 current 매크로는 어떤 동작을 할까요? current란 매크로는 현재 구동 중인 프로세스의 태스크 디스크립터 정보를 담고 있습니다. 그럼 current 매크로가 포함된 코드를 열어 볼까요? 다음 파일 디스크립터를 할당하는 get_unused_fd_flags 함수를 잠깐 볼게요.1 int get_unused_fd_flags(unsigned flags)2 {3 return __alloc_fd(current->files, 0, rlimit(RLIMIT_NOFILE), flags);4 }5 EXPO
while 문을 이용한 제곱값 출력 프로그램
By Regular Admission Empire | 2018년 5월 29일 |
#include<stdio.h>int main() { int a; printf("====================\n"); printf(" n n의 제곱\n"); printf("====================\n"); a = 1; while (a <= 10) { printf("%5d %5d\n", a, a*a); a++; } return 0; }