{"id":478,"date":"2020-02-04T11:09:40","date_gmt":"2020-02-04T11:09:40","guid":{"rendered":"http:\/\/emacslisp.com\/?p=478"},"modified":"2020-02-04T11:09:40","modified_gmt":"2020-02-04T11:09:40","slug":"linux-0-11-kernel-__nr_write-and-sys_write","status":"publish","type":"post","link":"http:\/\/emacslisp.com\/?p=478","title":{"rendered":"linux 0.11 kernel &#8211; __NR_write and sys_write"},"content":{"rendered":"<p>Linux-0.11\/include\/linux\/sys.h<\/p>\n<pre lang=\"c\" line=\"1\">\r\nfn_ptr sys_call_table[] = { sys_setup, sys_exit, sys_fork, sys_read,\r\nsys_write, sys_open, sys_close, sys_waitpid, sys_creat, sys_link,\r\nsys_unlink, sys_execve, sys_chdir, sys_time, sys_mknod, sys_chmod,\r\nsys_chown, sys_break, sys_stat, sys_lseek, sys_getpid, sys_mount, ...}\r\n<\/pre>\n<p>Linux-0.11\/include\/unistd.h<\/p>\n<pre lang=\"c\" line=\"1\">\r\n#define __NR_setup\t0\t\/* used only by init, to get system going *\/\r\n#define __NR_exit\t1\r\n#define __NR_fork\t2\r\n#define __NR_read\t3\r\n#define __NR_write\t4\r\n#define __NR_open\t5\r\n#define __NR_close\t6\r\n<\/pre>\n<p>Linux-0.11\/lib\/open.c<\/p>\n<pre lang=\"c\" line=\"1\">\r\n__asm__(\"int $0x80\"\r\n\t\t:\"=a\" (res)\r\n\t\t:\"0\" (__NR_open),\"b\" (filename),\"c\" (flag),\r\n\t\t\"d\" (va_arg(arg,int)));\r\n\r\n#define _syscall0(type,name) \\\r\n  type name(void) \\\r\n{ \\\r\nlong __res; \\\r\n__asm__ volatile (\"int $0x80\" \\\r\n\t: \"=a\" (__res) \\\r\n\t: \"0\" (__NR_##name)); \\\r\nif (__res >= 0) \\\r\n\treturn (type) __res; \\\r\nerrno = -__res; \\\r\nreturn -1; \\\r\n}\r\n\r\nset_system_gate(0x80,&system_call);\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Linux-0.11\/include\/linux\/sys.h fn_ptr sys_call_table[] = { sys_setup, sys_exit, sys_fork, sys_read, sys_write, sys_open, sys_close, sys_waitpid, sys_creat, sys_link, sys_unlink, sys_execve, sys_chdir, sys_time, sys_mknod, sys_chmod, sys_chown, sys_break, sys_stat, sys_lseek, sys_getpid, sys_mount, &#8230;} Linux-0.11\/include\/unistd.h #define __NR_setup 0 \/* used only by init, to get system going *\/ #define __NR_exit 1 #define __NR_fork 2 #define __NR_read 3 #define __NR_write 4 #define [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-478","post","type-post","status-publish","format-standard","hentry","category-linux-kernel-analysis"],"_links":{"self":[{"href":"http:\/\/emacslisp.com\/index.php?rest_route=\/wp\/v2\/posts\/478","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/emacslisp.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/emacslisp.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/emacslisp.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/emacslisp.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=478"}],"version-history":[{"count":1,"href":"http:\/\/emacslisp.com\/index.php?rest_route=\/wp\/v2\/posts\/478\/revisions"}],"predecessor-version":[{"id":479,"href":"http:\/\/emacslisp.com\/index.php?rest_route=\/wp\/v2\/posts\/478\/revisions\/479"}],"wp:attachment":[{"href":"http:\/\/emacslisp.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=478"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/emacslisp.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=478"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/emacslisp.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=478"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}