<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://valley.egloos.com/rss/style/style.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>이글루스 'kernel' 태그 최근글</title>
		<link>http://valley.egloos.com/tag/kernel</link>
		<description>kernel</description>
		<language>ko</language>
		<pubDate>Mon, 09 Apr 2012 23:00:10 +0900</pubDate>
		<generator>Egloos</generator>
		<item>
	<title><![CDATA[시바 애플 개객기!!]]></title>
	<link>http://handmade.egloos.com/5625383</link>
	<guid>http://handmade.egloos.com/5625383</guid>
	<description>
	<![CDATA[ 
시바 ... 아.. 시바.. 시바시바시바... 시바..라는 단어밖에 생각이 안난다..  그래도 문과 나왔는데.. 어휘력이 이렇게 달려서야..ㅠ_ㅜ  어쨌든, 애플은 시바고, 드라이버 만든 개객기는 인누와 좀 맞자.  시바, 개발자한데 확장해서 쓰라고 말할거면 explict 하게 적어놓던지.. 시바시바시바놈이...  C++ 줫도 모르는데 개삽 떠야겠냐- _-  시바.. 지금 이게 뭔꼴이여.. 이슈 한개 보다가 세개로 늘어나는 꼬라지는 : (  아키텍쳐 시바.. 시바 KPI 군좀 풍부하게 만들어 놓던가.. 시바놈이..  아.. 혈압.. 뒷골.. 시바.. 아..  패닉이 패닉을 부르더니 패닉하고 패닉스럽게 패닉하면 패닉하지 패닉대신 패닉하면 니가 패닉하냐? 시바 패닉.그리고 막판에 system hang 은 또 뭐	]]>
	</description>
	<pubDate>Mon, 09 Apr 2012 23:00:10 +0900</pubDate>
	<dc:creator><![CDATA[^@#%&amp;amp;amp;$]]></dc:creator>
</item>
<item>
	<title><![CDATA[[Linux] perf list - 성능 이벤트 목록 보기]]></title>
	<link>http://studyfoss.egloos.com/5636485</link>
	<guid>http://studyfoss.egloos.com/5636485</guid>
	<description>
	<![CDATA[ 
Linux: 3.3-rc5    perf list 명령은 perf에서 지원하는 &quot;이벤트&quot;의 목록을 보여준다.  기본적으로 perf의 역할은 하드웨어(PMU)에서 제공하는 성능 카운터를 제어하여 그 값을 읽는 것이지만  최근 여러가지 기능이 추가되면서 단순한 카운터의 역할을 넘어서는 작업이 가능해 짐에따라  perf에서 제공하는 기능들의 이름을 이벤트라 칭하게 되었고 내부적인 subsystem 이름도  performance counter에서 performance event로 변경되었다.    perf를 이용한다는 것은 결국 특정 프로그램이 실행되는 동안 혹은 (지정된 시간 동안) 시스템 전체에서  우리가 원하는 특정 이벤트가 언제/얼마나/어떻게 발생되었는지를 살펴보는 것이다.  따라서 현재 시스템에서 제공하는	]]>
	</description>
	<pubDate>Tue, 28 Feb 2012 17:26:14 +0900</pubDate>
	<dc:creator><![CDATA[F/OSS study]]></dc:creator>
</item>
<item>
	<title><![CDATA[[Linux] perf - 리눅스 성능 측정 도구]]></title>
	<link>http://studyfoss.egloos.com/5634580</link>
	<guid>http://studyfoss.egloos.com/5634580</guid>
	<description>
	<![CDATA[ 
Linux: 3.3-rc4  Ubuntu: 10.10    perf는 리눅스 커널에 포함된 &quot;user-level&quot; 도구로써, 시스템 성능 측정을 위한 다양한 기법들을 제공한다.  기본적으로는 CPU와 함께 제공되는 PMU (Performance Monitoring Unit)의 도움을 받아 동작하지만  CPU가 이를 지원하지 않더라도 커널에서 제공하는 여러 event/tracing 기법을 이용하여  (제한적이긴 하지만) 소프트웨어 적으로도 충분히 유용한 정보들을 처리할 수 있다.  현재 x86, arm, power-pc 와 같은 주요 아키텍처에서는 모두 PMU를 지원하고 있다.  (물론 이는 각 모델에 따라 차이가 있으며 자세한 정보는 해당 매뉴얼을 참조해야 할 것이다.)    perf는 커널과 별도로 컴파일	]]>
	</description>
	<pubDate>Wed, 22 Feb 2012 17:43:43 +0900</pubDate>
	<dc:creator><![CDATA[F/OSS study]]></dc:creator>
</item>
<item>
	<title><![CDATA[[Linux] concurrency managed workqueue (cmwq)]]></title>
	<link>http://studyfoss.egloos.com/5626173</link>
	<guid>http://studyfoss.egloos.com/5626173</guid>
	<description>
	<![CDATA[ 
<img 
				src="http://thumb.egloos.net/100x76/http://pds24.egloos.com/pds/201201/27/35/c0098335_4f22552b4ca6c.png"  
				alt="[Linux] concurrency managed workqueu.." 
				width="100px"  
				height="76pxpx"
				align="left"
				style="border:1px solid #DDDDDD;margin:0 10px 10px 0px;"
				/> Linux: 3.3-rc1    workqueue는 특정 작업을 별도의 process context에서 실행하고 싶은 경우 사용하는  커널 API로 커널 내의 다양한 위치에서 널리 사용된다. 이는 일종의 thread pool의  개념으로 볼 수 있으며, workqueue 시 생성 시에 작업용 thread들을 미리 만들어 둔  뒤, 이후에 필요한 work가 발생되었을 때 해당 thread를 이용하여 수행하는 방식이다.    기존의 구현 방식은 (singlethread 모드가 아닌) workqueue 생성 시 시스템에  존재하는 CPU 수 만큼의 worker_thread를 만들어두고, 이후 (queue_work 혹은  schedule_work 등의 API를 통해) work가 생성되었을 때 해당 CPU에 배정된 	]]>
	</description>
	<pubDate>Fri, 27 Jan 2012 16:45:58 +0900</pubDate>
	<dc:creator><![CDATA[F/OSS study]]></dc:creator>
</item>
<item>
	<title><![CDATA[[해부]Process Hacker #9 – 오브젝트 속성 째려보기..ㅋㅋ]]></title>
	<link>http://micingamja.egloos.com/5619548</link>
	<guid>http://micingamja.egloos.com/5619548</guid>
	<description>
	<![CDATA[ 
간만에..포스팅 하네요^^	]]>
	</description>
	<pubDate>Fri, 06 Jan 2012 09:34:20 +0900</pubDate>
	<dc:creator><![CDATA[절대감사.절대희망.절대긍정.미친감자 좌충우돌 프로그래밍 이야기]]></dc:creator>
</item>
<item>
	<title><![CDATA[[해부]Process Hacker #8 – OBJECT_HEADER 째려보기]]></title>
	<link>http://micingamja.egloos.com/5616540</link>
	<guid>http://micingamja.egloos.com/5616540</guid>
	<description>
	<![CDATA[ 
할렐루야~오늘도 참 좋은 하루입니다^^오늘도 기적이 일어나길 바라며.일초 일초도 의미있고 감사하며 살아가봅시다.할렐루야~~지난 이야기에서 오브젝트 테이블 (즉, 핸들 테이블) 엔트리를 Enumeration(열거)할 때호출되는 콜백함수를 좀째려봐 줬죠??^^기억하시죠??기억이 나실지 않는다면…이전 편을 읽어주시면 되구요..오늘은 계속해서..오브젝트 테이블 Enumeration(열거) 시 호출되는 CallBack함수를 계속해서 째려보겠습니다.음..결국 오브젝트 테이블 엔트리의 첫번째 필드에서 오브젝트 대가리(Header) 포인터 값을 알아냅니다.음…저 ObpDecodeObject 매크로가 뭐하는지 이해가시죠??^^    이 구조체 들은 Process Hacker 소스안에 다 정의 되어 있습니다.^^ㅋㅋㅋ오늘은 	]]>
	</description>
	<pubDate>Wed, 28 Dec 2011 09:31:22 +0900</pubDate>
	<dc:creator><![CDATA[절대감사.절대희망.절대긍정.미친감자 좌충우돌 프로그래밍 이야기]]></dc:creator>
</item>
<item>
	<title><![CDATA[안드로이드용 Linux Kernel Source Code 받기(updated)]]></title>
	<link>http://taehyo.egloos.com/4170886</link>
	<guid>http://taehyo.egloos.com/4170886</guid>
	<description>
	<![CDATA[ 
<img 
				src="http://thumb.egloos.net/100x76/http://pds23.egloos.com/pds/201112/20/64/d0087864_4eefe32daffa9.png"  
				alt="안드로이드용 Linux Kernel Source Code 받.." 
				width="100px"  
				height="76pxpx"
				align="left"
				style="border:1px solid #DDDDDD;margin:0 10px 10px 0px;"
				/> 올해 초 안드로이드용 리눅스 커널 소스코드 받는 법에 대하여 포스팅한 적이 있다. (링크)  그런데 9월 경에 안드로이드 Git 서버가 해킹을 당하고 나서 커널 소스코드를 받을 수 있는 방법이  봉쇄되어 버렸고(서버 복구 작업에 의해) 한동안 코드를 받을 수가 없었다.  그런데 오늘 확인해 보니 드디어 안드로이드의 커널을 받을 수 있도록 오픈이 되었다. (링크)  Git에서 소스코드를 받는 방법은 주소만 다를 뿐 다른 부분은 전과 동일하다. 1. git clone 실행   [taehyo@mdbuild:~/ics-4.0/kernel]# git clone [복사할 디렉터리명]  2. git branch -a 로 다운로드 가능한 브랜치 확인   [taehyo@mdbuild:~/ics-4.0/kernel]# git	]]>
	</description>
	<pubDate>Tue, 20 Dec 2011 10:53:07 +0900</pubDate>
	<dc:creator><![CDATA[태효의 세상 사는 이야기]]></dc:creator>
</item>
<item>
	<title><![CDATA[리눅스 서버 커널버전 확인하기]]></title>
	<link>http://genes1s.egloos.com/2827029</link>
	<guid>http://genes1s.egloos.com/2827029</guid>
	<description>
	<![CDATA[ 
$ uname -m 결과값 : i686  $ arch 결과값 : i686  $ getconf LONG_BIT(/usr/libexec/getconf/default soft link로 부터 확인되는 값, 커널에 직접 설정값을 불러옴) 결과값 : 32 or 64  $ file /sbin/init = ($file /usr/bin/file) 결과값  : /sbin/init: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped  * CPU에서 64bit 지원여부 확인  * getconf   	]]>
	</description>
	<pubDate>Mon, 12 Dec 2011 14:55:15 +0900</pubDate>
	<dc:creator><![CDATA[Good mind]]></dc:creator>
</item>
<item>
	<title><![CDATA[Linux :: Kernel :: Module :: Makefile :: CFLAGS]]></title>
	<link>http://myou11.egloos.com/5574860</link>
	<guid>http://myou11.egloos.com/5574860</guid>
	<description>
	<![CDATA[ 
   1 obj-m += test.o   2 CFLAGS_test.o += -DDEBUG   3    4 KDIR=/lib/modules/`uname -r`/build   5    6 all:   7     make -C $(KDIR) M=$(PWD) modules   8    9 clean:  10     make -C $(KDIR) M=$(PWD) clean  11   12 run: all  13     sudo dmesg -c &amp;gt; /dev/null  14     sudo insmod test.ko  15     sudo rmmod test  16     sudo dmesg  	]]>
	</description>
	<pubDate>Mon, 21 Nov 2011 22:02:09 +0900</pubDate>
	<dc:creator><![CDATA[do { Jazz jzz = JazzFactory.newInstance(feel); jzz.play(); } while(true);]]></dc:creator>
</item>
<item>
	<title><![CDATA[Linux :: Kernel :: Workqueue]]></title>
	<link>http://myou11.egloos.com/5573850</link>
	<guid>http://myou11.egloos.com/5573850</guid>
	<description>
	<![CDATA[ 
  1 #include &amp;lt;linux/module.h&amp;gt;   2 #include &amp;lt;linux/kernel.h&amp;gt;   3 #include &amp;lt;linux/workqueue.h&amp;gt;   4    5 struct work_struct w;   6 struct workqueue_struct* wq;   7    8 void   9 func(struct work_struct* pw) {  10     pr_debug(&amp;quot;%s: &amp;amp;w=%p, pw=%p&amp;quot;, __func__, &amp;amp;w, pw);  11 }  12   13 int  14 minit(void) {  15     if ((wq = create_workqueue(&amp;quot;test&amp;quot;)) == NULL)  1	]]>
	</description>
	<pubDate>Sat, 19 Nov 2011 06:40:17 +0900</pubDate>
	<dc:creator><![CDATA[do { Jazz jzz = JazzFactory.newInstance(feel); jzz.play(); } while(true);]]></dc:creator>
</item>
<item>
	<title><![CDATA[Linux :: Kernel :: Timer :: Expired]]></title>
	<link>http://myou11.egloos.com/5572350</link>
	<guid>http://myou11.egloos.com/5572350</guid>
	<description>
	<![CDATA[ 
  1 #include &amp;lt;linux/timer.h&amp;gt;   2 #include &amp;lt;linux/kernel.h&amp;gt;   3    4 struct timer_list t;   5    6 void   7 func(unsigned long arg) {   8     pr_debug(&amp;quot;timer was expired.\n&amp;quot;);   9 }  10   11 int  12 minit(void) {  13     init_timer(&amp;amp;t);  14   15     t.function = func;  16     t.expires = jiffies + 5 * HZ;  17   18     add_timer(&amp;amp;t);  19   20     pr_debug(&amp;quot;timer wa	]]>
	</description>
	<pubDate>Tue, 15 Nov 2011 01:01:30 +0900</pubDate>
	<dc:creator><![CDATA[do { Jazz jzz = JazzFactory.newInstance(feel); jzz.play(); } while(true);]]></dc:creator>
</item>
<item>
	<title><![CDATA[Linux :: Kernel :: mdelay()]]></title>
	<link>http://myou11.egloos.com/5571410</link>
	<guid>http://myou11.egloos.com/5571410</guid>
	<description>
	<![CDATA[ 
  1 #include &amp;lt;linux/module.h&amp;gt;   2 #include &amp;lt;linux/kernel.h&amp;gt;   3 #include &amp;lt;linux/init.h&amp;gt;   4 #include &amp;lt;linux/delay.h&amp;gt;   5    6 int   7 minit() {   8     pr_debug(&amp;quot;mdelay(1000 * 2)&amp;quot;);   9   10     mdelay(1000 * 2);  11   12     pr_debug(&amp;quot;return&amp;quot;);  13   14     return 0;  15 }  16   17 void  18 mexit() {  19 }  20   21 module_init(minit);  22 module_exit(me	]]>
	</description>
	<pubDate>Sat, 12 Nov 2011 03:29:04 +0900</pubDate>
	<dc:creator><![CDATA[do { Jazz jzz = JazzFactory.newInstance(feel); jzz.play(); } while(true);]]></dc:creator>
</item>
<item>
	<title><![CDATA['*** mixed implicit and normal rules.  Stop' on Kernel Compile]]></title>
	<link>http://handmade.egloos.com/5569455</link>
	<guid>http://handmade.egloos.com/5569455</guid>
	<description>
	<![CDATA[ 
Makefile 의 에러에 해당하는 라인에 가보면 아래와 같은 스타일로 된 라인을 볼 수 있다.[config %config: scripts_basic outputmakefile FORCE]    이 코드를 앞에 식별자를 삭제해야한다..  즉,  [%config: scripts_basic outputmakefile FORCE]  이러한 형태로 변경      ref :  	]]>
	</description>
	<pubDate>Mon, 07 Nov 2011 17:11:23 +0900</pubDate>
	<dc:creator><![CDATA[^@#%&amp;amp;amp;$]]></dc:creator>
</item>
<item>
	<title><![CDATA[Linux :: Kernel :: Structure :: container_of()]]></title>
	<link>http://myou11.egloos.com/5566388</link>
	<guid>http://myou11.egloos.com/5566388</guid>
	<description>
	<![CDATA[ 
  1 #include &amp;lt;linux/kernel.h&amp;gt;   2 #include &amp;lt;linux/module.h&amp;gt;   3    4 int   5 minit(void) {   6     struct s {   7         int a;   8         int b;   9         int c;  10     } v;  11   12     printk(&amp;quot;container (&amp;amp;v): 0x%p\n&amp;quot;, &amp;amp;v);  13     printk(&amp;quot;container of a: 0x%p\n&amp;quot;, container_of(&amp;amp;v.a, struct s, a));  14     printk(&amp;quot;container of b: 0x%p\n&amp;quot;,	]]>
	</description>
	<pubDate>Mon, 31 Oct 2011 04:12:59 +0900</pubDate>
	<dc:creator><![CDATA[do { Jazz jzz = JazzFactory.newInstance(feel); jzz.play(); } while(true);]]></dc:creator>
</item>
<item>
	<title><![CDATA[Linux :: Kernel :: Structure :: offsetof]]></title>
	<link>http://myou11.egloos.com/5564670</link>
	<guid>http://myou11.egloos.com/5564670</guid>
	<description>
	<![CDATA[ 
  1 #include &amp;lt;linux/kernel.h&amp;gt;   2 #include &amp;lt;linux/sched.h&amp;gt;   3 #include &amp;lt;linux/module.h&amp;gt;   4 #include &amp;lt;linux/stddef.h&amp;gt;   5    6 int   7 minit(void) {   8     struct st {   9         int m1;  10         int m2;  11         int m3;  12     } s;  13   14     printk(&amp;quot;offsetof(struct st, m1)=%d\n&amp;quot;, offsetof(struct st, m1));  15     printk(&amp;quot;offsetof(struct st, m2)=	]]>
	</description>
	<pubDate>Thu, 27 Oct 2011 06:56:14 +0900</pubDate>
	<dc:creator><![CDATA[do { Jazz jzz = JazzFactory.newInstance(feel); jzz.play(); } while(true);]]></dc:creator>
</item>
	</channel>
</rss>

