{"id":645,"date":"2016-06-16T15:11:03","date_gmt":"2016-06-17T00:11:03","guid":{"rendered":"\/blog\/?p=645"},"modified":"2023-09-21T09:38:01","modified_gmt":"2023-09-21T00:38:01","slug":"%eb%a6%ac%eb%88%85%ec%8a%a4-%ec%bb%a4%eb%84%90-api-%eb%aa%a8%ec%9d%8c","status":"publish","type":"post","link":"https:\/\/hasu0707.duckdns.org\/blog\/?p=645","title":{"rendered":"\ub9ac\ub205\uc2a4 \ucee4\ub110 API \ubaa8\uc74c"},"content":{"rendered":"\n<p style=\"text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: NanumGothic, 'Segoe UI', 'Segoe UI', 'Malgun Gothic', Meiryo, 'Trebuchet MS', Dotum, AppleGothic, sans-serif; padding: 0px; background-color: rgba(255, 255, 255, 0.901961);\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ucd9c\ucc98&nbsp;<\/span><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">::&nbsp;<\/span><a href=\"http:\/\/mystria.egloos.com\/3723773\" style=\"color: rgb(49, 128, 218); text-decoration: none; margin: 0px; padding: 0px; font-size: 13px; border: 0px; vertical-align: baseline; font-family: Verdana; line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">http:\/\/mystria.egloos.com\/3723773<\/span><\/a><\/p>\r\n<p style=\"text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: NanumGothic, 'Segoe UI', 'Segoe UI', 'Malgun Gothic', Meiryo, 'Trebuchet MS', Dotum, AppleGothic, sans-serif; padding: 0px; background-color: rgba(255, 255, 255, 0.901961);\"><br \/><\/p>\r\n<p style=\"text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: NanumGothic, 'Segoe UI', 'Segoe UI', 'Malgun Gothic', Meiryo, 'Trebuchet MS', Dotum, AppleGothic, sans-serif; padding: 0px; background-color: rgba(255, 255, 255, 0.901961);\"><br \/><\/p>\r\n<p style=\"text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: NanumGothic, 'Segoe UI', 'Segoe UI', 'Malgun Gothic', Meiryo, 'Trebuchet MS', Dotum, AppleGothic, sans-serif; padding: 0px; background-color: rgba(255, 255, 255, 0.901961);\"><span style=\"margin: 0px; padding: 0px; font-size: 13px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; font-family: Verdana; background-color: rgb(255, 255, 255);\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">2\uc7a5<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">insmod<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">modprobe<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">rmmod<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc2e4\ud589 \ucee4\ub110\ub85c \ubaa8\ub4c8\uc744 \uc801\uc7ac\ud558\uace0 \uc81c\uac70\ud558\ub294 \uc0ac\uc6a9\uc790 \uc601\uc5ed \uc720\ud2f8\ub9ac\ud2f0<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/init.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">module_init(init_function);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">module_exit(cleanup_function);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ubaa8\ub4c8 \ucd08\uae30\ud654 \ud568\uc218\uc640 \uc815\ub9ac \ud568\uc218\ub97c \uc9c0\uc815\ud558\ub294 \ub9e4\ud06c\ub85c<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/sched.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">sleeping\uad00\ub828 \ud568\uc218 \ubcc0\uc218, \ub4dc\ub77c\uc774\ubc84\uc758 Kernel API\ub300\ubd80\ubd84\uc758 \uc815\uc758<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">stuct task_struct *current;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud604\uc7ac \ud504\ub85c\uc138\uc2a4<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">current-&gt;pid<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">current-&gt;comm<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud604\uc7ac \ud504\ub85c\uc138\uc2a4 ID\uc640 \uba85\ub839 \uc774\ub984<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">obj-m<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ucee4\ub110 \ube4c\ub4dc \uc2dc\uc2a4\ud15c\uc774 \ud604\uc7ac \ub514\ub809\ud1a0\ub9ac\uc5d0\uc11c \ube4c\ub4dc\ud560 \ubaa8\ub4c8\uc744 \ud30c\uc545\ud558\ub294\ub370 \uc0ac\uc6a9\ud558\ub294 makefile\uc2ec\ubc8c<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\/sys\/module<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc801\uc7ac\ub41c \ubaa8\ub4c8 \uc815\ubcf4\ub97c \ud3ec\ud568\ud558\ub294 sys \ub514\ub809\ud1a0\ub9ac \uce35<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\/proc\/modules<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ubaa8\ub4c8 \uc815\ubcf4\ud45c\uc2dc \uac00\uc0c1 \ud30c\uc77c<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/module.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/version.h&gt;<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">LINUX_VERSION_CODE<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ubc84\uc804 \uc758\uc874\uc131 \ud655\uc778 \uc815\uc218 \ub9e4\ud06c\ub85c #ifdef\ub85c \uc0ac\uc6a9<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">EXPORT_SYMBOL (symbol);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">EXPORT_SYMBOL_GPL (symbol);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc2ec\ubc8c\uc744 \uc678\ubd80\uc5d0 \uacf5\uac1c<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">MODULE_AUTHOR(author);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">MODULE_DESCRIPTION(description);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">MODULE_LICENSE(license_string);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">MODULE_VERSION(version_string);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">MODULE_DEVICE_TABLE(table_info);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">MODULE_ALIAS(alternate_name);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ubaa8\ub4c8 \uc815\ubcf4\ub97c \ubaa9\uc801\ud30c\uc77c\uc5d0 \uc0bd\uc785<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/moduleparam.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">module_param(variable, type, perm); \/\/ S_IRUGO<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">module_param_array(name, type, num, perm); \/\/ S_IRUGO<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc0ac\uc6a9\uc790\uac00 \uc9c0\uc815\ud560 \uc218 \uc788\ub294 \ub9e4\uac1c\ubcc0\uc218 \ub9cc\ub4dc\ub294 \ub9e4\ud06c\ub85c<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">bool, charp, int, invbool, long, short, ushort, uint, unlong, intarray<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/kernel.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int printk(const char* fmt, ...);<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><br \/><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">3\uc7a5<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/types.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">dev_t<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ub514\ubc14\uc774\uc2a4 \ubc88\ud638 \ud0c0\uc785<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int MAJOR(dev_t dev);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int MINOR(dev_t dev);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ub514\ubc14\uc774\uc2a4 \ubc88\ud638\uc5d0\uc11c \uc8fc, \ubd80\ubc88\ud638\ub97c \uc5bb\uc5b4\ub0c4<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">dev_t MKDEV(unsigned int major, unsigned int minor);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc8fc, \ubd80\ubc88\ud638\uc5d0\uc11c dev_t \uc790\ub8cc \uc544\uc774\ud15c \uc0dd\uc131<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/fs.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud30c\uc77c\uc2dc\uc2a4\ud15c \ud568\uc218<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int register_chrdev_region(dev_t first, unsigned int count, char *name)<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int alloc_chrdev_region(dev_t *dev, unsigned int firstminor, unsigned int count, char *name)<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int unregister_chrdev_region(dev_t first, unsigned int count);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ub514\ubc14\uc774\uc2a4 \ubc88\ud638\ub97c \ud560\ub2f9\/\ud574\uc81c reg:\ubc88\ud638\ub97c \uc54c\ub54c, alloc:\ub3d9\uc801 \ud560\ub2f9<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int register_chrdev(unsigned int major, const char *name, struct file_operations *fops);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">major\uac00 0\uc774\uba74 \ub3d9\uc801, 0\uc774 \uc544\ub2c8\uba74 \uadf8 \ubc88\ud638 \uc0ac\uc6a9 \ucee4\ub110 2.6\ubc84\uc804 \uc774\uc804<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int unregister_chrdev(unsigned int major, const char *name);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud574\uc81c<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">struct file_operations;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ubb38\uc790 \ub4dc\ub77c\uc774\ubc84 \uba54\uc18c\ub4dc<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">struct file;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc5f4\ub9b0 \ud30c\uc77c \ud45c\ud604<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">struct inode;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ub514\uc2a4\ud06c \uc0c1\uc758 \ud30c\uc77c<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/cdev.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">struct cdev *cdev_alloc(void);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void cdev_init(struct cdev *dev, struct file_operations *fops);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int cdev_add(struct cdev *dev, dev_t num, unsigned int count);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void cdev_del(struct cdev *dev);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ubb38\uc790 \ub514\ubc14\uc774\uc2a4 \uad6c\uc870\uccb4 \uad00\ub9ac<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/kernel.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">container_of(pointer, type, field);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ub2e4\ub978 \uad6c\uc870\uccb4\uc5d0 \ud3ec\ud568\ub41c \uad6c\uc870\uccb4 \ud3ec\uc778\ud130 \ubc1b\uc544 \ud574\ub2f9 \uad6c\uc870\uccb4\ub97c \ud3ec\ud568\ud558\ub294 \uad6c\uc870\uccb4 \ud3ec\uc778\ud130\ub97c \ubc18\ud658<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;asm\/uaccess.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ucee4\ub110 \ucf54\ub4dc\uac00 \uc0ac\uc6a9\uc790 \uc601\uc5ed\uc73c\ub85c \uc790\ub8cc \uc804\uc1a1<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">unsigned long copy_from_user(void *to, const void *from, unsigned long count);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">unsigned long copy_to_user(void *to, const void *from, unsigned long count);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc0ac\uc6a9\uc790 \uc601\uc5ed\uacfc \ucee4\ub110 \uc601\uc5ed\uac04 \uc790\ub8cc \ubcf5\uc0ac<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">&nbsp;<\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">5\uc7a5<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;asm\/semaphore.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">DECLARE_MUTEX(name);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">DECLARE_MUTEX_LOCKED(name);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc138\ub9c8\ud3ec\uc5b4 \uc815\uc758, \ucd08\uae30\ud654 \ub9e4\ud06c\ub85c<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void init_MUTEX(struct semaphore *sem);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void init_MUTEX_LOCKED(struct semaphore *sem);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc2e4\ud589 \uc2dc\uc810\uc5d0\uc11c \uc138\ub9c8\ud3ec\uc5b4 \ucd08\uae30\ud654<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void down(struct semaphore *sem); \/\/ \ud638\ucd9c \ud504\ub85c\uc138\uc2a4\ub97c \uc778\ud130\ub7fd\ud2b8 \ubd88\uac00\uc0c1\ud0dc\ub85c \uc7a0\uc7ac\uc6c0<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int down_interruptible(struct semaphore *sem); \/\/ \uc2dc\uadf8\ub110\ub85c \uc778\ud130\ub7fd\ud2b8 \uac00\ub2a5<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int down_trylock(struct semaphore *sem); \/\/ \uc138\ub9c8\ud3ec\uc5b4 \ubd88\uac00\uc2dc \ud568\uc218 \ubc18\ud658<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void up(struct semaphore *sem); \/\/ \ub77d\uc744 \ud574\uc81c<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc138\ub9c8\ud3ec\uc5b4\uc5d0 \ub77d\uc744 \uac78\uace0, \ud574\uc81c<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">struct rw_semaphore;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">init_rwsem(struct rw_semaphore *sem);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc77d\uae30\/\uc4f0\uae30 \uc2a4\ub808\ub4dc \uc138\ub9c8\ud3ec\uc5b4<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void down_read(struct rw_semaphore *sem);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int down_read_trylock(struct rw_semaphore *sem);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void up_read(struct rw_semaphore *sem);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void down_write(struct rw_semaphore *sem);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\"<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\"<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void downgrade_write(struct rw_semaphore *sem);<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/completion.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">DECLARE_COMPLETION(name);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">init_completion(struct completion *c); \/\/ \ucc98\uc74c \ucd08\uae30\ud654<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">INIT_COMPLETION(struct completion c); \/\/ \uc7ac\ucd08\uae30\ud654<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void wait_for_completion(struct completion *c);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc644\ub8cc \uc2dc\uadf8\ub110\uc744 \uae30\ub2e4\ub9bc<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void complete(struct completion *c); \/\/ \uc2a4\ub808\ub4dc\uc911 \ud558\ub098 \uae68\uc6c0<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void complete_all(struct completion *c); \/\/ \ubaa8\ub4e0 \ub300\uae30\uc790 \uae68\uc6c0<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc644\ub8cc \uc2dc\uadf8\ub110 \ubcf4\ub0c4<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void complete_and_exit(struct completion *c, long retval);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc644\ub8cc \ud6c4 \ud604 \uc2a4\ub808\ub4dc\uc5d0\uc11c exit\ud638\ucd9c<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/spinlock.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">spinlock_t lock = SPIN_LOCK_UNLOCKED;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">spin_lock_init(spinlock_t *lock);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc2a4\ud540\ub77d \ucd08\uae30\ud654 \ub450 \ubc29\ubc95<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void spin_lock(spinlock_t *lock); \/\/_irqrestore, _irq, _bh<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void spin_trylock(spinlock_t *lock); \/\/ \uc2a4\ud540\ud558\uc9c0 \uc54a\uc74c<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void spin_unlock(spinlock_t *lock); \/\/ \uc2a4\ud540\ub77d \ud574\uc81c<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><br \/><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">rwlock_t lock = RW_LOCK_UNLOCKED<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">rwlock_init(rwlock_t *lock);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc77d\uae30\/\uc4f0\uae30 \uc2a4\ub808\ub4dc \ub77d \ucd08\uae30\ud654 \uc2dc\ud0a4\ub294 \ub450 \ubc29\ubc95<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void read_lock(rwlock_t *lock); \/\/_irqrestore, _irq, _bh<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void read_unlock(rwlock_t *lock);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void write_lock(rwlock_t *lock);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void write_unlock(rwlock_t *lock);<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><br \/><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;asm\/atomic.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">atomic_t v = ATOMIC_INIT(value);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int atomic_read(atomic_t *v);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void atomic_set(atomic_t *v, int i);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void atomic_add(int i, atomic_t *v);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void atomic_sub(int I, atomic_t *v);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void atomic_inc(atomic_t *v);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void atomic_dec(atomic_t *v);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int atomic_sub_and_test(int I, atomic_t *v);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int atomic_add_negative(int I, atomic_t *v);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int atomic_dec_and_test(atomic_t *v);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int atomic_inc_and_test(atomic_t *v);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int atomic_inc_return(atomic_t *v);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc6d0\uc790 \uc815\uc218 \ubcc0\uc218. atomic_t \ubcc0\uc218\ub294 \uc704\uc758 \ud568\uc218\ub85c\ub9cc \uc811\uadfc \uac00\ub2a5<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;asm\/bitops.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void set_bit(int nr, void *addr);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void clear_bit(int nr, void *addr);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void change_bit(int nr, void *addr);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void test_and_set_bit(int nr, void *addr);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void test_and_clear_bit(int nr, void *addr);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void __set_bit(int nr, void *addr)<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void __clear_bit(int nr, void *addr)<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void __change_bit(int nr, void *addr)<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc6d0\uc790 \ube44\ud2b8 \ubcc0\uc218. \ud50c\ub798\uadf8\ub098 \ub77d \ubcc0\uc218\ub85c \ud65c\uc6a9.<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/seqlock.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">seqlock_t lock = SEQLOCK_UNLOCKED;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">seqlock_init(seqlock_t *lock);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">unsigned int read_seqbegin_irqsave(seqlock_t *lock, unsigned long flags); \/\/ \uc77d\uae30 \uad8c\ud55c \uc5bb\uae30<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int read_seqretry_irqrestore(seqlock_t *lock, unsigned int seq, unsigned long flags); \/\/ \uc77d\uae30 \uad8c\ud55c \uc5bb\uae30<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void write_seqlock_irqsave(seqlock_t *lock, unsigned long flags); \/\/ \uc4f0\uae30 \uad8c\ud55c \uc5bb\uae30<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void write_seqlock_irq(seqlock_t *lock); \/\/ \uc4f0\uae30 \uad8c\ud55c \uc5bb\uae30<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void write_seqlock_bh(seqlock_t *lock);&nbsp;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void write_sequnlock_irqrestore(seqlock_t *lock, unsigned long flags); \/\/ \uc4f0\uae30 \uad8c\ud55c \ud574\uc81c<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void write_sequnlock_irq(seqlock_t *lock);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void write_sequnlock_bh(seqlock_t *lock);<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><br \/><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/rcupdate.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">Read - Copy - Update \ub9e4\ucee4\ub2c8\uc998\uc744 \uc0ac\uc6a9\ud558\uae30 \uc704\ud55c \ud574\ub354<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void rcu_read_lock();<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void rcu_read_unlock();<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">Atomic \uc77d\uae30 \uc811\uadfc<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void call_rcu(struct rcu_head *head, void (*func)(void *arg), *void arg);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ubaa8\ub4e0 \ud504\ub85c\uc138\uc11c\uac00 \uc2a4\ucf00\uc904 \ub418\uc5b4 RCU \ud574\uc81c\ud574\ub3c4 \uc548\uc804\ud560 \ub54c \uc218\ud589\ud560 \ucf5c\ubc31 \ub4f1\ub85d \ud568\uc218<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><br \/><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">6\uc7a5<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/ioctl.h&gt;<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;asm\/uaccess.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int access_ok(int type, const void *addr, unsigned long size);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc0ac\uc6a9\uc790 \uc601\uc5ed \ud3ec\uc778\ud130\ub97c \uc2e4\uc81c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294\uc9c0 \ud655\uc778\ud55c\ub2e4. \ud3ec\uc778\ud130\ub97c \ucc38\uc870\ud574\ub3c4 \ub41c\ub2e4\uba74 access_ok\ub294 0\uc774 \uc544\ub2cc\uac12 \ubc18\ud658<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">type : VERIFY_READ, VERIFY_WRITE<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int put_user(datum, ptr); \/\/ access_ok\ub97c \uc774\ubbf8 \ud638\ucd9c<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int __get_user(local, ptr); \/\/ __\ub294 access_ok\ub97c \uc774\ubbf8 \ud638\ucd9c\ud588\ub2e4\uace0 \uac00\uc815<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc790\ub8cc\ub97c \uc0ac\uc6a9\uc790 \uc601\uc5ed\uc5d0\uc11c \uac00\uc838\uc624\uac70\ub098 \uc800\uc7a5 \ub9e4\ud06c\ub85c, \uc804\uc1a1 \uc6a9\ub7c9\uc740 sizeof(*ptr)<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/capability.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc0ac\uc6a9\uc790 \uc601\uc5ed \ud504\ub85c\uc138\uc2a4\uc758 \ub2a5\ub825\uc744 \uc9c0\uc815<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int capable(int capability);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud504\ub85c\uc138\uc2a4\uc5d0 \uc8fc\uc5b4\uc9c4 capbility\uac00 \uc788\uc73c\uba74 0\uc774 \uc544\ub2cc\uac12 \ubc18\ud658<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/wait.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">typedef struct { \/*...*\/ } wait_queue_head_t; \/\/ \uba85\uc2dc\uc801 \ucd08\uae30\ud654 \ud544\uc694<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void init_waitqueue_head(wait_queue_head_t *queue); \/\/ \uc2e4\ud589 \uc2dc\uc810\uc5d0\uc11c \ucd08\uae30\ud654<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">DECLARE_WAIT_QUEUE_HEAD(queue); \/\/ \ucef4\ud30c\uc77c \uc2dc\uc810\uc5d0\uc11c \ucd08\uae30\ud654<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ub9ac\ub205\uc2a4 \ub300\uae30 \ud050\uc5d0 \ub300\ud55c \ud0c0\uc785 \uc815\uc758<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void wait_event(wait_queue_head_t q, int condition);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void wait_event_interruptible(wait_queue_head_t q, int condition);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void wait_event_timeout(wait_queue_head_t q, int condition, int time);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void wait_event_interruptible_timeout(wait_queue_head_t q, int condition, int time);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc8fc\uc5b4\uc9c4 \ucee8\ub514\uc158\uc774 \ucc38\uc774 \ub420 \ub54c \uae4c\uc9c0 \ud050\uc5d0\uc11c \ud504\ub85c\uc138\uc2a4\uac00 \uc790\uac8c \ub9cc\ub4e0\ub2e4.<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void wake_up(struct wait_queue **q);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void wake_up_interruptible(struct wait_queue **q); \/\/ interruptible\ud55c \ud504\ub85c\uc138\uc2a4\ub9cc \uae68\uc6c0<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void wake_up_nr(struct wait_queue **q int nr); \/\/&nbsp;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void wake_up_interruptible_nr(struct wait_queue **q, int nr);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void wake_up_all(struct wait_queue **q);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void wake_up_interruptible_all(struct wait_queue **q);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void wake_up_interruptible_sync(struct wait_queue **q);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud050\uc5d0\uc11c \uc7a0\ub4e0 \ud504\ub85c\uc138\uc2a4\ub97c \uae68\uc6b4\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c \uc0c1\ud638\ubc30\uc81c \uc911\uc778 \ud504\ub85c\uc138\uc11c 1\uac1c\ub9cc<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/sched.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">set_current_state(int state);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud604\uc7ac \ud504\ub85c\uc138\uc2a4\uc758 \uc2e4\ud589 \uc0c1\ud0dc\ub97c \uc124\uc815<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">TASK_RUNNING<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">TASK_INTERRUPTIBLE<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">TASK_UNINTERRUPTIBLE<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void schedule(void);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc2e4\ud589 \ud050\uc5d0\uc11c \uc2e4\ud589 \uac00\ub2a5 \ud504\ub85c\uc138\uc2a4\ub97c \uc120\ud0dd<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">typedef struct { \/*...*\/ } wait_queue_t; \/\/ \uba85\uc2dc\uc801 \ucd08\uae30\ud654 \ud544\uc694<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">init_waitqueue_entry(wait_queue_t *entry, struct task_struct *task);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">wait_queue_t\ud0c0\uc785\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud504\ub85c\uc138\uc2a4\ub97c \ub300\uae30 \ud050\uc5d0 \ub123\ub294\ub2e4.<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void prepare_to_wait(wait_queue_head_t *queue, wait_queue_t *wait, int state);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc218\uc791\uc5c5\uc73c\ub85c \uc7a0\ub4e4\uae30 \uad6c\ud604<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/poll.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void poll_wait(struct file *filp, wait_queue_head_t *q, poll_table *p)<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud604\uc7ac \ud504\ub85c\uc138\uc2a4\ub97c \uc989\uc2dc \uc2a4\ucf00\uc904\ub9c1\ud558\uc9c0 \uc54a\uace0 \ub300\uae30 \ud050\uc5d0 \ub123\ub294\ub2e4. \ub514\ubc14\uc774\uc2a4 \ub4dc\ub77c\uc774\ubc84\uc758 poll\uba54\uc18c\ub4dc\uac00 \uc0ac\uc6a9<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int fasync_helper(struct inode *inode, struct file *filp, int mod, struct fasync_struct **fa);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\/\/\ubab0\ub77c<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">&nbsp;<\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><br \/><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">7\uc7a5<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc2dc\uac04 \ub9de\ucd94\uae30<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#incldue &lt;linux\/param.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">HZ : \ucd08\ub2f9 \ud074\ub85d \ud2f1 \uc218<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/jiffies.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">volatile unsigned long jiffies<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">u64 jiffies_64 \/\/ \ub9e4 \ud074\ub7ed \ud2f1\ub9c8\ub2e4 1\uc529 \uc99d\uac00<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int time_after(unsigned long a, unsigned long b);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int time_before(unsigned long a, unsigned long b);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int time_after_eq(unsigned long a, unsigned long b);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int time_before_eq(unsigned long a, unsigned long b);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc9c0\ud53c\ub97c \uc548\uc804\ud558\uac8c \ube44\uad50(\uc624\ubc84\ud50c\ub85c\uc6b0x)<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">u64 get_jiffies_64(void);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uacbd\uc7c1\uc5c6\uc774 \uc9c0\ud53c\uac12 \uac00\uc838\uc634<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/time.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">unsigned long timespec_to_jiffies(struct timespec *value);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void jiffies_to_timespec(unsigned long jiffies, struct timespec *value);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">unsigned long timeval_to_jiffies(struct timeval *value);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void jiffies_to_timeval(unsigned long jiffies, struct timeval *value);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc9c0\ud53c\ub97c \ub2e4\ub978 \uc2dc\uac01 \ud45c\ud604\uc73c\ub85c, \uc2dc\uac01\uc744 \uc9c0\ud53c\ub85c \ubcc0\ud658<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;asm\/msr.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">rdtsc(low32,high32); \/\/ 32 32 \ub458\ub2e4<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">rdtscl(low32); \/\/ \ud558\uc704<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">rdtscll(var64); \/\/ 64 longlong \ubcc0\uc218<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud0c0\uc784\uc2a4\ud0ec\ud504 \uce74\uc6b4\ud130\ub97c \uc77d\ub294 \ub9e4\ud06c\ub85c x86 32bit*2<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/timex.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">cycles_t get_cycles(void);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud50c\ub7ab\ud3fc \uc758\uc874\uc801\uc73c\ub85c \ud0c0\uc784\uc2a4\ud0ec\ud504 \uce74\uc6b4\ud130 \ubc18\ud658, \uae30\ub2a5 \uc9c0\uc6d0X = 0<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/time.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">unsigned long mktime (unsigned int year, unsigned int mon,<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">&nbsp;&nbsp;&nbsp;unsigned int day, unsigned int hour,<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">&nbsp;&nbsp;&nbsp;unsigned int min, unsigned int sec);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ub144\uc6d4\uc77c\uc2dc\ubd84\ucd08 \ubc1b\uc544\uc11c \uae30\uc900\uc2dc\ubd80\ud130 \uc5bc\ub9c8\ub098 \ud758\ub800\ub294\uc9c0 \ubc18\ud658<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void do_gettimeofday(struct timeval *tv);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud604\uc7ac\uc2dc\uac04\uc744 \uae30\uc900 \uc2dc\uac01 \uc774\ud6c4 \ucd08\uc640 \ub9c8\uc774\ud06c\ub85c\ucd08\ub85c \ubc18\ud658<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">struct timespec current_kernel_time(void);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">1\uc9c0\ud53c resolution\uc73c\ub85c \ud604\uc7ac\uc2dc\uac01\uc744 \ubc18\ud658<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc9c0\uc5f0<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/wait.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">long wait_event_interruptible_timeout(wait_queue_head_t *q, contion, signed long timeout);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud604\uc7ac \ud504\ub85c\uc138\uc2a4\ub97c \ub300\uae30\ud050\uc5d0 \ub123\uace0 \uc7ac\uc6c0, \ud0c0\uc784\uc544\uc6c3\uc740 \uc9c0\ud53c\uac12<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/sched.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">signed long schedule_timeout(signed long timeout);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud0c0\uc784\uc544\uc6c3 \ub9cc\ub8cc\uc2dc \ud604\uc7ac \ud504\ub85c\uc138\uc2a4\uac00 \uae68\uc5b4\ub0ac\uc74c\uc744 \ud655\uc778 \ud6c4 \uc2a4\uce90\uc904\ub7ec \ud638\ucd9c. \uc778\ud130\ub7fd\ud2b8 \ubd88\uac00<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud638\ucd9c\uc790\ub294 \uc7a0\uc790\uae30\uc804\uc5d0 set_current_state\ud638\ucd9c \ud574\uc57c\ud568<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/delay.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void ndelay(unsigned long nsecs);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void udelay(unsigned long usecs);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void mdelay(unsigned long msecs);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uac01 \ub2e8\uc704 \uc9c0\uc5f0<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void msleep(unsigned int millisecs);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">unsigned long msleep_interruptible(unsigned int millisecs);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void ssleep(unsigned int seconds)<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc8fc\uc5b4\uc9c4 \ubc00\ub9ac\ucd08 \ub9cc\ud07c \ud504\ub85c\uc138\uc2a4\ub97c \uc7ac\uc6c0<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><br \/><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ucee4\ub110 \ud0c0\uc774\uba38<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;asm\/hardirq.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int in_interrupt(void); \/\/ \ud504\ub85c\uc138\uc2a4 context \ubc16<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int in_atomic(void); \/\/ \uc2a4\ud540\ub77d, \uc778\ud130\ub7fd\ud2b8 \uc2a4\uce90\uc904\ub9c1 \ud574\uc11c \uc548\ub418\ub294 \uacbd\uc6b0<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">bool\ubc18\ud658 \ud638\ucd9c \ucf54\ub4dc\uac00 \uc5b4\ub5a4 context\uc5d0\uc11c \uc2e4\ud589\uc911\uc778\uc9c0 \ubc18\ud658<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/timer.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">struct timer_list {<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">&nbsp;\/* ... *\/<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">&nbsp;unsigned long expires;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">&nbsp;void (*function)(unsigned long);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">&nbsp;unsigned long data;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">};<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void init_timer(struct timer_list *timer);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">struct timer_list TIMER_INITIALIZER(_function, _expires, _data);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">timer_list \uc790\ub8cc \uad6c\uc870\uccb4 \ucd08\uae30\ud654<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void add_timer(struct timer_list * timer);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud604\uc7ac CPU\uc5d0\uc11c \uc2e4\ud589\ud558\ub3c4\ub85d \ud0c0\uc774\uba38 \uad6c\uc870\uccb4 \ub4f1\ub85d<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int del_timer(struct timer_list * timer);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int del_timer_sync(struct timer_list *timer); \/\/ \ub2e4\ub978 CPU\uc5d0\uc11c \uc2e4\ud589\uc911 \uc544\ub2d8\uc744 \ubcf4\uc7a5<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud65c\uc131 \ud0c0\uc774\uba38 \ubaa9\ub85d\uc5d0\uc11c \ud0c0\uc774\uba38 \uc81c\uac70<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int mod_timer(struct timer_list *timer, unsigned long expires);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc774\ubbf8 \uc2a4\ucf00\uc904\ub41c \ud0c0\uc774\uba38 \uad6c\uc870\uccb4\uc758 \ub9cc\ub8cc\uc2dc\uac04 \ubcc0\uacbd, add\ub300\uc2e0 \uc0ac\uc6a9\uac00\ub2a5<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int timer_pending(const struct timer_list * timer);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud0c0\uc774\uba38\uad6c\uc870\uccb4\ub97c \uc774\ubbf8 \ub4f1\ub85d\ud588\ub294\uc9c0 bool\ubc18\ud658<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud0dc\uc2a4\ud06c\ub9bf<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/interrupt.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">struct tasklet_struct {<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">&nbsp;\/* ... *\/<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">&nbsp;void (*func)(unsigned long);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">&nbsp;unsigned long data;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">};<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void tasklet_init(struct tasklet_struct *t, void (*func)(unsigned long), unsigned long data);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc774\ubbf8 \ud560\ub2f9\ub41c \ud0dc\uc2a4\ud06c\ub9bf \ucd08\uae30\ud654<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">DECLARE_TASKLET(name, func, data);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">DECLARE_TASKLET_DISABLED(name, func, data); \/\/ \ube44\ud65c\uc131\ud654 \uc0c1\ud0dc\ub85c \ud45c\uc2dc<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud0dc\uc2a4\ud06c\ub9bf \uad6c\uc870\uccb4 \uc815\uc758<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void tasklet_disable(struct tasklet_struct *t); \/\/ \ub2e4\ub978 CPU\uc5d0\uc11c \uc2e4\ud589\uc911\uc77c \uacbd\uc6b0 \ub05d\ub0a0\ub54c \uae4c\uc9c0 \ub300\uae30<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void tasklet_disable_nosync(struct tasklet_struct *t); \/\/ \ub300\uae30 \uc548\ud558\uace0 \ubc18\ud658<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void tasklet_enable(struct tasklet_struct *t);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud0dc\uc2a4\ud06c\ub9bf\uc744 \ud65c\uc131\/\ube44\ud65c\uc131\ud654<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void tasklet_schedule(struct tasklet_struct *t);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void tasklet_hi_schedule(struct tasklet_struct *t);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ubcf4\ud1b5\/ \ub192\uc740 \uc6b0\uc120\uc21c\uc704\ub85c \ud0dc\uc2a4\ud06c\ub9bf \uc218\ud589\ud1a0\ub85d \uc2a4\uce90\uc904\ub9c1<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void tasklet_kill(struct tasklet_struct *t);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud65c\uc131 \ud0dc\uc2a4\ud06c\ub9bf \ubaa9\ub85d\uc5d0\uc11c \uc81c\uac70 \/\/ \ub2e4\ub978 CPU\uc5d0\uc11c \uc2e4\ud589\uc911\uc77c \uacbd\uc6b0 \ub05d\ub0a0\ub54c \uae4c\uc9c0 \ub300\uae30<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc791\uc5c5\ud050<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/workqueue.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">struct workqueue_struct;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">struct work_struct;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc791\uc5c5\ud050\uc640 \uc791\uc5c5\ud56d\ubaa9 \uad6c\uc870\uccb4<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">struct workqueue_struct *create_workqueue(const char *name); \/\/ \ud504\ub85c\uc138\uc11c\ub9c8\ub2e4 \uc791\uc5c5\uc790 \uc2a4\ub808\ub4dc\uac00 \uc788\ub294 \uc791\uc5c5\ud050 \uc0dd\uc131<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">struct workqueue_struct *create_singlethread_workqueue(const char *name); \/\/ \uc791\uc5c5\uc790 \uc2a4\ub808\ub4dc\uac00 \ud558\ub098\ubfd0\uc778 \uc791\uc5c5\ud050 \uc0dd\uc131<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void destroy_workqueue(struct workqueue_struct *queue);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc791\uc5c5\ud050 \uc0dd\uc131\/\ud574\uc81c<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">DECLARE_WORK(name, void (*function)(void *), void *data);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">INIT_WORK(struct work_struct *work, void (*function)(void *), void *data);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">PREPARE_WORK(struct work_struct *work, void (*function)(void *), void *data);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc791\uc5c5\ud050\ud56d\ubaa9 \uc120\uc5b8, \ucd08\uae30\ud654<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int queue_work(struct workqueue_struct *queue, struct work_struct *work);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int queue_delayed_work(struct workqueue_struct *queue, struct work_struct *work, unsigned long delay);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc791\uc5c5\ud050\uc5d0 \uc791\uc5c5 \uc0bd\uc785<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int cancel_delayed_work(struct work_struct *work); \/\/ \uc791\uc5c5 \ud56d\ubaa9 \uc81c\uac70<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void flush_workqueue(struct workqueue_struct *queue); \/\/ \uc2dc\uc2a4\ud15c\uc5d0 \uc2e4\ud589 \uc911\uc778 \uc791\uc5c5\ud050 \ubaa8\ub450 \uc81c\uac70<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int schedule_work(struct work_struct *work);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int schedule_delayed_work(struct work_struct *work, unsigned long delay);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void flush_scheduled_work(void);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uacf5\uc720 \uc791\uc5c5 \ud050\ub85c \uc791\uc5c5\uc6a9<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><br \/><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">9\uc7a5<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/kernel.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void barrier(void)<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc18c\ud504\ud2b8\uc6e8\uc5b4 \uba54\ubaa8\ub9ac \uc7a5\ubcbd\uc740 \ucef4\ud30c\uc77c\ub7ec\uc5d0\uac8c \uc774 \uba85\ub839 \uc804\ud6c4 \ubaa8\ub4e0 \uba54\ubaa8\ub9ac\ub97c volatile\uc811\uadfc\uc73c\ub85c \uac04\uc8fc\ud558\ub77c \uc694\uccad<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;asm\/system.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void rmb(void);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void read_barrier_depends(void);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void wmb(void);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void mb(void);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud558\ub4dc\uc6e8\uc5b4 \uba54\ubaa8\ub9ac \uc7a5\ubcbd\uc740\uc740 CPU\uc640 \ucef4\ud30c\uc77c\ub7ec\uc5d0\uac8c \uc774 \uba85\ub839 \uc804\ud6c4\uc758 \ubaa8\ub4e0 \uba54\ubaa8\ub9ac \uc77d\uae30 \uc4f0\uae30 \ub458\ub2e4\ub97c \uc810\uac80\ud558\ub77c \uc694\uccad<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;asm\/io.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">unsigned inb(unsigned port);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void outb(unsigned char byte, unsigned port);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">unsigned inw(unsigned port);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void outw(unsigned short word, unsigned port);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">unsigned inl(unsigned port);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void outl(unsigned double word, unsigned port);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">I\/O port\ub97c \uc77d\uace0 \uc4f0\ub294 \ud568\uc218<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">~_p I\/O\uc5f0\uc0b0\uc744 \uc9e7\uc740 \uc2dc\uac04 \uc9c0\uc5f0\ud560 \ud544\uc694\uac00 \uc788\uc744 \ub54c.<\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void insb(unsigned port, void *addr, unsigned long count);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void outsb(unsigned port, void *addr, unsigned long count);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void insw(unsigned port, void *addr, unsigned long count);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\"<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\"<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ubb38\uc790\uc5f4 \ud568\uc218, \uc785\ub825 \ud3ec\ud2b8 -&gt; \uba54\ubaa8\ub9ac \uc601\uc5ed, \uba54\ubaa8\ub9ac \uc601\uc5ed -&gt; \ucd9c\ub825 \ud3ec\ud2b8 count \uac1c\uc218 \ub9cc\ud07c \uc790\ub8cc \uc804\uc1a1<\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/ioport.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">struct resource *request_region(unsigned long start, unsigned long len, char *name);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void release_region(unsigned long start, unsigned long len);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int check_region(unsigned long start, unsigned long len);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">I\/O \ud3ec\ud2b8 \uc790\uc6d0 \ud560\ub2f9\uc790.<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">struct resource *request_mem_region(unsigned long start, unsigned long len, char *name);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void releas_mem_region(unsigned long start, unsigned long len);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int check_mem_region(unsigned long start, unsigned long len);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uba54\ubaa8\ub9ac \uc601\uc5ed \uc790\uc6d0 \ud560\ub2f9 \ucc98\ub9ac \ud568\uc218<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;asm\/io.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void *ioremap(unsigned long phys_addr, unsigned long size);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void *ioremap_nocache(unsigned long phys_addr, unsigned long size);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void *iounmap(void *virt_addr);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">ioremap\uc740 \ubb3c\ub9ac\uc801 \uc8fc\uc18c \uc601\uc5ed\uc744 \ud504\ub85c\uc138\uc11c\uc758 \uac00\uc0c1 \uc8fc\uc18c \uc601\uc5ed\uc5d0 \uc7ac\uc0ac\uc0c1\ud558\uc5ec \ucee4\ub110\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uac8c \ud568, \uc0ac\uc0c1 \ud574\uc81c<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;asm\/io.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">unsigned int ioread8(void *addr); \/\/ 16, 32<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void iowrite8(void *addr); \/\/ 16, 32<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">I\/O \uba54\ubaa8\ub9ac \uc811\uadfc \ud568\uc218<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">unsigned int ioread8_rep(void *addr); \/\/ 16, 32<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void iowrite8_rep(void *addr); \/\/ 16, 32<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">I\/O \uba54\ubaa8\ub9ac \uc811\uadfc \ud568\uc218 \ubc18\ubcf5<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">unsigned readb(address); \/b, w, l<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">unsigned writeb(address); \/b, w, l<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">memset_io(address, value, count);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">memset_fromio(dest, source, nbyte);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">memset_toio(dest, source, nbyte);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc608\uc804 \ud568\uc218<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void *ioport_map(unsigned long port, unsigned int count);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void ioport_unmap(void *addr);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">I\/O \ud3ec\ud2b8\ub97c I\/O \uba54\ubaa8\ub9ac\ucc98\ub7fc \ucde8\uae09\ud558\ub824\uba74 \ud3ec\ud2b8\ub97c ioport_map\uc73c\ub85c \ub118\uae34\ub2e4.<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">&nbsp;<\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">10\uc7a5<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/interrupt.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int request_irq(unsigned int irq, irqreturn_t (*handler)(), unsigned long flags, const char *dev_name, void *dev_id);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void free_irq(unsigned int irq, void *dev_id);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc778\ud130\ub7fd\ud2b8 \ud578\ub4e4\ub7ec\ub97c \ub4f1\ub85d, \ud574\uc81c<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;linux\/irq.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int can_request_irq(unsigned int irq, unsigned long flags);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">x86\uc5d0\uc11c \uc0ac\uc6a9 \uc778\ud130\ub7fd\ud2b8 \uc120 \ud560\ub2f9 \uc131\uacf5\uc2dc 0\uc774 \uc544\ub2cc \uac12 \ubc18\ud658<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">#include &lt;asm\/signal.h&gt;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">SA_INTERRUPT \ube60\ub978 \ud578\ub4e4\ub7ec \uc124\uce58<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">SA_SHIRQ \uacf5\uc720 \ud578\ub4e4\ub7ec<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">SA_SAMPLE_RANDOM \uc2dc\uc2a4\ud15c \uc5d4\ud2b8\ub85c\ud53c \uc0dd\uc131\uc5d0 \uc778\ud130\ub7fd\ud2b8 \ud0c0\uc784\uc2a4\ud0ec\ud504 \uc0ac\uc6a9<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\/proc\/interrupt&nbsp;<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\/proc\/stat<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud558\ub4dc\uc6e8\uc5b4 \uc778\ud130\ub7fd\ud2b8\uc640 \uc124\uce58\ub41c \ud578\ub4e4\ub7ec\uc5d0 \ub300\ud55c \uc815\ubcf4\ub97c \ubcf4\uc5ec\uc8fc\ub294 \ud30c\uc77c \uc2dc\uc2a4\ud15c\uc758 \ub178\ub4dc<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">unsigned long probe_irq_on(void);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">int probe_irq_off(unsigned long);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud0d0\uc0c9\uacfc\uc815\uc5d0\uc11c \ub514\ubc14\uc774\uc2a4\uac00 \uc0ac\uc6a9\ud560 \uc778\ud130\ub7fd\ud2b8 \uc120\uc744 \uacb0\uc815\ud560 \ub54c \ub4dc\ub77c\uc774\ubc84\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \ud568\uc218.<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc778\ud130\ub7fd\ud2b8 \uc0dd\uc131 \ud6c4 probe_irq_on\uacb0\uacfc\ub97c probe_irq_off\ub85c \ub118\uaca8\uc57c\ud55c\ub2e4.<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">probe_irq_off\uc758 \ubc18\ud658\uac12\uc740 \uac10\uc9c0\ud55c \uc778\ud130\ub7fd\ud2b8 \ubc88\ud638<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">IRQ_NONE<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">IRQ_HANDLED<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">IRQ_RETVAL(int x)<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc778\ud130\ub7fd\ud2b8 \ud578\ub4e4\ub7ec\uac00 \ubc18\ud658\ud560 \uc218 \uc788\ub294 \uac12<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void disable_irq(int irq);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void disable_irq_nosync(int irq);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void enable_irq(int irq);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\uc778\ud130\ub7fd\ud2b8 \ubcf4\uace0\ub97c \ud65c\uc131\/\ube44\ud65c\uc131\ud654. \uacf5\uc720\ucc98\ub9ac\uae30\ub294 \uc0ac\uc6a9 \ubd88\uac00<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void local_irq_save(unsigned long flags);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void local_irq_restore(unsigned long flags);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud604\uc7ac \ud504\ub85c\uc138\uc11c\uc5d0\uc11c \uc778\ud130\ub7fd\ud2b8 \ube44\ud65c\uc131\ud654 \uc774\uc804\uc0c1\ud0dc \uae30\uc5b5 - \ubcf5\uad6c<\/span><\/span><\/p>\r\n<p style=\"font-size: 13px; text-shadow: rgba(0, 0, 0, 0.00784314) 0px 0px 1px; font-family: '\ub9d1\uc740 \uace0\ub515', 'malgun gothic', \ub3cb\uc6c0, dotum, AppleGothic, sans-serif; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(31, 31, 31); line-height: 23px; background-color: rgb(255, 255, 255);\"><span style=\"margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Verdana;\"><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void local_irq_disable(void);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">void local_irq_enable(void);<\/span><br \/><span style=\"font-family: \uad74\ub9bc\uccb4, 'Courier New', 'Lucida Console'; font-size: 12px;\">\ud604\uc7ac \ud504\ub85c\uc138\uc11c\uc5d0\uc11c \uc778\ud130\ub7fd\ud2b8\ub97c \ubb34\uc870\uac74 \ud65c\uc131\ud654\/\ube44\ud65c\uc131\ud654<\/span><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ucd9c\ucc98&nbsp;::&nbsp;http:\/\/mystria.egloos.com\/3723773 2\uc7a5insmodmodprobermmod\uc2e4\ud589 \ucee4\ub110\ub85c \ubaa8\ub4c8\uc744 \uc801\uc7ac\ud558\uace0 \uc81c\uac70\ud558\ub294 \uc0ac\uc6a9\uc790 \uc601\uc5ed \uc720\ud2f8\ub9ac\ud2f0 #include &lt;linux\/init.h&gt;module_init(init_function);module_exit(cleanup_function);\ubaa8\ub4c8 \ucd08\uae30\ud654 \ud568\uc218\uc640 \uc815\ub9ac \ud568\uc218\ub97c \uc9c0\uc815\ud558\ub294 \ub9e4\ud06c\ub85c #include &lt;linux\/sched.h&gt;sleeping\uad00\ub828 \ud568\uc218 \ubcc0\uc218, \ub4dc\ub77c\uc774\ubc84\uc758 Kernel API\ub300\ubd80\ubd84\uc758 \uc815\uc758stuct task_struct *current;\ud604\uc7ac \ud504\ub85c\uc138\uc2a4current-&gt;pidcurrent-&gt;comm\ud604\uc7ac \ud504\ub85c\uc138\uc2a4 ID\uc640 \uba85\ub839 \uc774\ub984obj-m\ucee4\ub110 \ube4c\ub4dc \uc2dc\uc2a4\ud15c\uc774 \ud604\uc7ac \ub514\ub809\ud1a0\ub9ac\uc5d0\uc11c \ube4c\ub4dc\ud560 \ubaa8\ub4c8\uc744 \ud30c\uc545\ud558\ub294\ub370 \uc0ac\uc6a9\ud558\ub294 makefile\uc2ec\ubc8c\/sys\/module\uc801\uc7ac\ub41c \ubaa8\ub4c8 \uc815\ubcf4\ub97c \ud3ec\ud568\ud558\ub294 sys \ub514\ub809\ud1a0\ub9ac \uce35\/proc\/modules\ubaa8\ub4c8 \uc815\ubcf4\ud45c\uc2dc \uac00\uc0c1 \ud30c\uc77c #include &lt;linux\/module.h&gt;#include &lt;linux\/version.h&gt; LINUX_VERSION_CODE\ubc84\uc804 \uc758\uc874\uc131 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[19],"tags":[],"class_list":["post-645","post","type-post","status-publish","format-standard","hentry","category-development_lib"],"_links":{"self":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/645","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=645"}],"version-history":[{"count":0,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/645\/revisions"}],"wp:attachment":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=645"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=645"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=645"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}