ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
½Ã½ºÅÛ ÄÝ Ãß°¡

B.4. ½Ã½ºÅÛ ÄÝ Ãß°¡

½Ã½ºÅÛ ÄÝÀ» Ãß°¡Çغ¸ÀÚ. ¿ì¼± »õ·Î¿î ½Ã½ºÅÛ ÄÝÀÌ µé¾îÀÖ´Â ÆÄÀÏÀ» ¸¸µéÀÚ($TOPDIR)/kernel/mysyscall.c

/* $(TOPDIR)/kernel/mysyscall.c */
#include <linux/linkage.h>

asmlinkage int sys_mysyscall()
{
	printk("My First System Call.\n");
}

$(TOPDIR)/include/asm/unistd.h¿¡ »õ·Î¿î ½Ã½ºÅÛ ÄÝÀ» À§ÇÑ ¹øÈ£¸¦ Ãß°¡ÇÑ´Ù.

...
#define __NR_vfork	190
#define __NR_mysyscall	191

$(TOPDIR)/i386/kernel/entry.S¿¡ ÀÖ´Â ½Ã½ºÅÛ ÄÝ Å×ÀÌºí¿¡ µî·ÏÇÑ´Ù.

ENTRY(sys_call_table)
	...
.long	SYSBOL_NAME(sys_mysyscall)
.rept NR_syscalls-191

Ä¿³ÎÀ» ÄÄÆÄÀÏÇϴµ¥ À§¿¡¼­ ¸¸µç mysyscall.c¸¦ Makefile¿¡ µî·ÏÇØ ÁØ´Ù. °£´ÜÈ÷ 'O_OBJS='À̶õ ÁÙ¿¡ mysyscall.o¶ó°í Ãß°¡ÇØÁÖ¸é µÈ´Ù.

Ä¿³Î ÄÄÆÄÀÏÀÌ ³¡³ª¸é »õ·Î¿î Ä¿³ÎÀ» ¼³Ä¡Çϰí ÀçºÎÆÃÇÑ ´ÙÀ½ ¾Æ·¡¿Í °°Àº Å×½ºÆ® ÇÁ·Î±×·¥À» ¸¸µé¾î ½ÇÇàÇØ º¸ÀÚ.

/* test.c */
#include <linux/unistd.h>

_syscall0(int, mysyscall);

int main()
{
	int i;

	i = mysyscall();

	return i;
}

Å×½ºÆ® ÇÁ·Î±×·¥À» ½ÇÇàÇßÀ» ¶§ È­¸é¿¡ 'My First System Call'À̶ó°í Ãâ·ÁµÇ¸é ´ÙÇàÀε¥ ¾Æ¹«·± Ãâ·Âµµ ¾ø´Ù¸é dmesg¸¦ »ç¿ëÇØ Ä¿³Î Ãâ·ÂÀ» È®ÀÎÇØ º¸ÀÚ. Á¦ÀÏ ³¡¿¡ ¹®ÀåÀÌ Á¦´ë·Î ÂïÇû´Â°¡?

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.