2016-04-03

ioctl 이란 ?

ioctl 이란?



리눅스에서 디바이스 파일을 자체를 제어 하기 위해서 사용한다
즉, 일반적인 읽기 쓰기 작업을 Read/Write 저레벨 함수를 사용하고, ioctl 커맨드를 구현하여 데이타의 R/W과 구분하여 드라이버를 제어한다.

CMD 구성 (32bits)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
R/W 구분 데이터 크기 매직번호 구분번호
2bit : R/W 구분
14bit : 데이터 크기
8bit : 매직번호
8bit : 구분번호

매직번호 TYPE : 0~255 ioCtl 명령을 드라이버가 인식하기 위한 고유번호
구분번호 NR : ioCtl 명령들을 서로 구분하기 위해서 사용한다.
데이커 크기  SIZE : arg에 넘어오는 데이터의 크기를 나타낸다.
R/W 구분 Direction :  읽기인지 쓰기인지 명령을 구분한다.


Centos7 에서 테스트 하면
 커널 버전이 3.14 이기 떄문에 ioctl 함수가 존재 하지 않는다.
BKL(Big Kernel Lock) 문제 때문인데, 이는 드라이버 하나의 ioctl을 호출 할때마다 커널에 락이 걸리는 비 효율성이 나타나는 문제이다.

특히 SMP 구조를 가지는 컴퓨팅 환경에서는 , 그 특성이 크리티컬 자원을 공유하는 특성을 가지기 때문에 더 큰 비효율성을 가져온다.

따라서 3.x 커널 버전에서는 unlocked_ioctl을 제공한다.

노오븐 쿠킹

노오븐 쿠킹 과자 만들기



  •  반죽 만들기 


 재료 : 버터 150g, 계란(or 우유, 떠먹는 요구르트 1개), 설탕(75g+ 알파), 바닐라 향신료(옵션으로 적정량),  베이킹 파우다 15g+ 알파, 박력분 350g + 알파

위 재료를 쏟아넣고 버터가 잘 섞일 때까지 섞어 반죽을 만들어 준다.



  • 쿠키용 블루베리 잼 만들기


냉동 블루베리와 꿀, 혹은 물엿등과 으깨면서 졸여준다.


  • 모양 만들기


주변 뚜껑들 혹은, 다이소에서 제과용 틀을 구매한후 사용한다.
준비해둔 잼을 올려준다거나 치즈를 모양내 얻어줘도 좋다.

예1.

예2.

예3.




  •  노오븐으로 굽기


종이 키친타올을 여러겹으로 일반 냄비 밑바닥에 여러겹으로 놓는다.
여러겹으로 할수록 불조절이 간단해 진다.

  냄비의 뚜껑를 닫고( 필수, 열면 안됨) 주로 약한 불로 8~ 10분정도 구우면 된다


  •  결과물
잘 먹으면 된다.