2014. 5. 25. 08:55 devel/code

bit field


자꾸 까먹어서리.......

'devel > code' 카테고리의 다른 글

ptr loop  (0) 2014.11.19
code 깔끔  (0) 2014.08.25
struct device  (0) 2014.05.15
쉘 스크립트 배열  (0) 2014.03.15
for loop  (0) 2014.03.04
Posted by 쵸코케키

2014. 5. 15. 10:37 devel/code

struct device






보물 주머니가 있었쿠나

based on linux kernel ver 2.6.37

'devel > code' 카테고리의 다른 글

code 깔끔  (0) 2014.08.25
bit field  (0) 2014.05.25
쉘 스크립트 배열  (0) 2014.03.15
for loop  (0) 2014.03.04
kcompat.h - linux kernel version  (0) 2014.02.26
Posted by 쵸코케키

2014. 3. 15. 22:13 devel/code

쉘 스크립트 배열

 

되네유

'devel > code' 카테고리의 다른 글

bit field  (0) 2014.05.25
struct device  (0) 2014.05.15
for loop  (0) 2014.03.04
kcompat.h - linux kernel version  (0) 2014.02.26
문자열 배열  (0) 2013.07.06
Posted by 쵸코케키

2014. 3. 4. 15:16 devel/code

for loop

warning: statement with no effect

for(j;j<4;j++)

for(;j<4;j++)

'devel > code' 카테고리의 다른 글

struct device  (0) 2014.05.15
쉘 스크립트 배열  (0) 2014.03.15
kcompat.h - linux kernel version  (0) 2014.02.26
문자열 배열  (0) 2013.07.06
c에서 linked list 자료형에 관계 없이 접근하기  (0) 2013.01.23
Posted by 쵸코케키

 

별건 아니고 e1000e driver 예전꺼를 최신 커널에서 컴파일 하려니까 오류가 나더라

원인을 찾아보니까 kernel 2.x에서 사용하던 kernel function 중 하나 kmap_atomic, kunmap_atomic 함수의

인자 하나가 없어졌다

 

요걸 어떻게 인텔에서 처리했나 찾아봤다

e1000e driver 구버전(2.x), e1000e driver 신버전(3.x)

을 보면 kcompat.h 이라는 헤더파일에 커널 버전에 따라서 호환성을 다르게 넣는 코드가 숨어있더라

예를 들면 SLE_VERSION_CODE 같은 녀석들 혹은

#if ( LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) )

이런식의 코드들로 구분을 하더라

 

사용된 함수 정의를 undef로 날려버리고 새로 define 함수로 인자 하나를 다른거로 교체하느 방식으로 코드를 작성했다

 

이게 장점이 뭐냐면 c 파일에서 일일히 kmap_atomic 함수를 호출할 때마다 #if(LINUX_VERSION~~) 이런식으로 작성을 하면 엄청 코드가 난잡해지고 지저분해지는데

헤더파일에 저렇게 해주면 코드 가독성이 많이 증가해서 좋은 것 같다

 

인텔 형님들, 좋은 팁을 배워갑니다

 

아래는 다른 예시


 

 

 

'devel > code' 카테고리의 다른 글

쉘 스크립트 배열  (0) 2014.03.15
for loop  (0) 2014.03.04
문자열 배열  (0) 2013.07.06
c에서 linked list 자료형에 관계 없이 접근하기  (0) 2013.01.23
ntohs 같은 byte order 변경 함수  (0) 2012.10.24
Posted by 쵸코케키

2013. 7. 6. 06:27 devel/code

문자열 배열

 

 

1 #include <stdio.h>
  2 #include <string.h>
  3
  4 //void az(char g[][8])
  5 void az(char (*g)[8])
  6 {
  7     int i;
  8     printf("%s\n", g[0]);
  9     printf("%s\n", g[1]);
 10     printf("%s\n", g[2]);
 11     printf("%s\n", g[3]);
 12 }
 13
 14 int main()
 15 {
 16     char v[4][8];
 17     int i;
 18     for(i=0; i<4; i++)
 19     strcpy(v[i],"xsfadf");
 20     az(v);
 21
 22     return 0;
 23 }

개념은 쉬운데

함수 인자 정의가 헷갈린다

 

만약 const가 아니라 인자를 수정해야한다면?

3중 포인터?

Posted by 쵸코케키

http://kldp.org/node/109915

 

#define list_entry(ptr, type, member) \
((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))

 

linux kernel code에 좀 신기한게 있어서 찾아봤는데 와...천재인거 같다

예전에 했던 고민들이 이런 방법으로 해결이 되는구나

'devel > code' 카테고리의 다른 글

for loop  (0) 2014.03.04
kcompat.h - linux kernel version  (0) 2014.02.26
문자열 배열  (0) 2013.07.06
ntohs 같은 byte order 변경 함수  (0) 2012.10.24
포인터 배열, 더블 포인터, 2차원 배열의 포인터  (0) 2012.07.21
Posted by 쵸코케키

필요한 일이 있어서 만들어보았다

EA -> AE

4bit씩 서로 변경

대단한건 아니고 그냥 적어봄

 

 uint8_t conv_order1b(uint8_t i)
 {
     uint8_t tmp=0;

     tmp |= (i>>7 & 0x1)<<3;
     tmp |= (i>>6 & 0x1)<<2;
     tmp |= (i>>5 & 0x1)<<1;
     tmp |= (i>>4 & 0x1)<<0;

     tmp |= (i>>3 & 0x1)<<7;
     tmp |= (i>>2 & 0x1)<<6;
     tmp |= (i>>1 & 0x1)<<5;
     tmp |= (i>>0 & 0x1)<<4;

     return tmp;
 }

'devel > code' 카테고리의 다른 글

for loop  (0) 2014.03.04
kcompat.h - linux kernel version  (0) 2014.02.26
문자열 배열  (0) 2013.07.06
c에서 linked list 자료형에 관계 없이 접근하기  (0) 2013.01.23
포인터 배열, 더블 포인터, 2차원 배열의 포인터  (0) 2012.07.21
Posted by 쵸코케키

출처 : 윤성우의 열혈 C 프로그래밍


포인터 배열

int n1=10,n2=20,n3=30, n4=40;

int* ptr[4]

int* ptr[4] = {&n1, &n2 ...};


  

2차원 배열의 포인터

int a2d[2][4] = {1,2,3,4,5,6,7,8};

int (*pptr)[4] = a2d;

int형 변수를 가리키면서 sizeof(int)x4 단위로 증감을 한다

 

pptr[i][j]로 활용

'devel > code' 카테고리의 다른 글

for loop  (0) 2014.03.04
kcompat.h - linux kernel version  (0) 2014.02.26
문자열 배열  (0) 2013.07.06
c에서 linked list 자료형에 관계 없이 접근하기  (0) 2013.01.23
ntohs 같은 byte order 변경 함수  (0) 2012.10.24
Posted by 쵸코케키
이전버튼 1 2 이전버튼

블로그 이미지
chocokeki
쵸코케키

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.4
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

최근에 올라온 글

최근에 달린 댓글

글 보관함