매크로

포스트: 38|아이템:매크로(19)
Tags

Posts

38 posts

[Linux][Kernel] container_of 매크로

Guillermo Austin Kim|2018년 5월 8일

이번에는 container_of란 매크로를 배워볼게요. 커널 코드에서 current 매크로 못지않게 많이 활용하는 매크로이니 잘 알아야겠죠. 그럼 다음 샘플 코드를 함께 보면서 container_of란 매크로을 어떻게 활용하는지 살펴볼까요? 다음 wq_barrier_func 함수를 예를 들까요? container_of를 써서 struct wq_barrier *barr 로컬 변수에 어떤 값을 대입하고 있죠.static struct workqueue_struct *dev_to_wq(struct device *dev){ struct wq_device *wq_dev = container_of(dev, struct wq_device, dev); return wq_dev->wq;} 위 코드를 읽기 전에 우

[Linux][GCC]## 매크로 - 심볼 생성

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

GCC - C언어 매크로(Macro) -(1)

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() 을 선언하는데, 반복되는 부분을 역슬래쉬 "\" 으로

[검은사막] 매크로가 미쳐 날뛰고 있습니다.

[검은사막] 매크로가 미쳐 날뛰고 있습니다.

검은사막의 빈부격차 극심화를 부추기는 생태계 파괴자가 나타났습니다. 오늘의 주인공 '매크로' 입니다. 1. 낚시 매크로 낚시 매크로의 경우는 그동안 암암리에 퍼져왔습니다. 자동 낚시의 경우 2분~3분에 1마리를 낚는 반면에 낚시 매크로는 낚시게임 자체를 방향키 이미지 인식을 통해 1분에 한번씩 자동으로 낚습니다. 수입은 당연히 자동 낚시 유저들에 비해서 2배~3배...어쩌면 그 이상일 겁니다. 검은사막 인벤 제보를 통해 수면위로 떠오른 낚시 매크로.. 관련 링크 : 2. 무역 매크로 유명 공성길드의 유저가 사용하다가 영상으로 덜미를 잡혀서 영구정지를 먹은걸로 화제가 되었었죠. 잠수 컨텐츠인데 무려 시간당 700만이나 벌으신답니다.(좆망겜 ㅅㅂ 진짜 하....)