LINUX

포스트: 477|조회수: 0|TERM
Items

Posts

477 posts

[Linux][Kernel] __init 매크로 (라즈베리파이)

Guillermo Austin Kim|2018년 3월 30일

코드 리뷰를 하다 보면 함수 앞에 __init 코드가 붙은 것이 보입니다. 음, 이 __init이란 코드는 어떤 동작을 할까요?같이 살펴볼게요. 그럼 다음 코드를 한번 같이 볼까요? 위에서 말씀드린대로 init_workqueues 함수 앞에 __init가 붙어 있습니다. 참고로, init_workqueues 함수는 이름과 같이 워크큐를 초기화하는 역할을 수행합니다.[kernel/workqueue.c]static int __init init_workqueues(void){ int std_nice[NR_STD_WORKER_POOLS] = { 0, HIGHPRI_NICE_LEVEL }; int i, cpu; 이전 장에서 C 코드를 보다가 조금 이라도 의문이 생기면 전처리 파일을 열어보는게 좋다고 했죠?이번

[Linux][Kernel] 매크로 ##uname 파라미터 전달 기법

Guillermo Austin Kim|2018년 3월 28일

여러분 리눅스 커널 코드를 자주 보시나요? 그런데 커널 소스를 보다가 막힐 때가 종종 있지 않나요? 함수를 따라 가다 보면 존재하지 않는 함수를 호출해서 길을 잃기도 합니다. 그리고 매크로가 너무 많아서 분석 시간이 너무 오래 걸리는 경우도 있습니다. 이번 장에서는 리눅스 커널 코드를 읽다가 만나는 매크로를 모두 풀어보겠습니다. 이 매크로만 풀어도 리눅스 커널 소스 코드를 아주 효율적으로 읽을 수 있어요. 자 그럼 한 가지 예를 들게요. 아래 코드를 보면 PageReclaim와 ClearPageReclaim 함수가 보입니다.[mm/filemap.c]void end_page_writeback(struct page *page){ if (PageReclaim(page)) { ClearPageReclaim

Linux 의 init 시스템: systemd 와 systemctl 간단 사용법

대부분의 리눅스 시스템에서는 다양한 프로세스를 Service 라는 이름으로 띄울 수 있는 systemd 라는 init system 과그리고 이를 관리하기위한 도구인 systemctl 을 가지고 있다. 이 포스팅에서는 !!! 이게 뭐하는 건지, 어떻게 사용하는지 간단하게 알아본다 영어 잘하는분은 제가 참고한 원서를 참고하시기 바랍니당 ㅎㅎㅎhttps://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units systemd : 일부 리눅스 배포판에서 유닉스 시스템 V나 BSD init 시스템 대신 사용자 공간을 부트스트래핑하고 최종적으로 모든

[Linux] systemd 를 이용하여 pyenv + virtualenv + uwsgi 구동하기

[Linux] systemd 를 이용하여 pyenv + virtualenv + uwsgi 구동하기

간단히 현재 상태를 이야기 한다면.nginx -> uwsgi 웹서버 -> Django App이 되겠다. 최근에 Django App 의 Python 과 Django 버전을 각각Python 3.4.3 -> 3.6.4Django 1.8 -> 1.11 으로 올리게 되어, 배포 루틴을 손을좀 보고있었다. 기존에 파이썬 버전관리는 pyenv 로 하고있고주로 uwsgi 를 구동하는 법은 sudo service uwsgi restart 를 이용하였는데. - pyenv 를 이용하여 새로운 가상환경 생성 및 pip 라이브러리 설치- uwsgi.ini 파일 세팅- Django application 의 신규 버전대응작업...을 마쳤는데 서버가 안켜지는 긔라...일단 uwsgi.ini 파일은 아래와 같