{
    "componentChunkName": "component---src-templates-blog-post-jsx",
    "path": "/posts/2020/12/14/6s081-lab2-system-calls/",
    "result": {"data":{"site":{"siteMetadata":{"siteUrl":"https://codeand.fun"}},"mdx":{"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"6.S081 lab2 system calls\",\n  \"date\": \"2020-12-14T15:20:55.000Z\",\n  \"tags\": [\"OS\", \"6.S081\", \"xv6\", \"RISC-V\"],\n  \"categories\": [\"Blog\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"6.S081 \\u7684\\u7B2C\\u4E8C\\u4E2A\\u5B9E\\u9A8C\\uFF0Csystem calls\\uFF0C\\u867D\\u7136\\u662F\\u597D\\u4E45\\u4E4B\\u524D\\u505A\\u7684\\u4E86\\uFF0C\\u4F46\\u662F\\u4E00\\u76F4\\u6CA1\\u628A\\u5B83\\u653E\\u5230\\u535A\\u5BA2\\u91CC\\u9762\\u3002\\u4ECA\\u5929\\u7565\\u65E0\\u804A\\uFF0C\\u5C31\\u5F04\\u4E86\\u4E00\\u4E0B\\u3002BTW\\uFF0C\\u7B2C\\u4E09\\u4E2A\\u5B9E\\u9A8C\\u6211\\u5230\\u73B0\\u5728\\u90FD\\u8FD8\\u6CA1\\u5F00\\u59CB\\u5462\\u3002\")), mdx(\"h2\", null, \"system call\"), mdx(\"p\", null, \"\\u5728\\u5B8C\\u6210\\u5B9E\\u9A8C\\u4E4B\\u524D\\uFF0C\\u6211\\u4EEC\\u53EF\\u4EE5\\u5148\\u4E86\\u89E3\\u4E00\\u4E0B\\u7CFB\\u7EDF\\u8C03\\u7528\\u7684\\u76F8\\u5173\\u7684\\u4EE3\\u7801\\u3002\"), mdx(\"p\", null, \"\\u9996\\u5148\\u5728\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"user/usys.pl\"), \"\\u4E2D\\u5305\\u542B\\u751F\\u6210\\u7CFB\\u7EDF\\u8C03\\u7528\\u6C47\\u7F16\\u7684 Perl \\u4EE3\\u7801\\uFF0C\\u5176\\u6838\\u5FC3\\u4E3A\\u4E0B\\u9762\\u8FD9\\u6BB5\\u4EE3\\u7801\\uFF1A\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"perl\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-perl\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-perl\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"sub\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"entry\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"my\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token variable\"\n  }, \"$name\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" shift\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"print\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\".global $name\\\\n\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"print\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\"${name}:\\\\n\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"print\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\" li a7, SYS_${name}\\\\n\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"print\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\" ecall\\\\n\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"print\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\" ret\\\\n\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\")))), mdx(\"p\", null, \"\\u53EF\\u4EE5\\u770B\\u51FA\\u6765\\u8FD9\\u662F\\u4E00\\u4E2A\\u521B\\u5EFA\\u6C47\\u7F16\\u7684\\u4EE3\\u7801\\uFF0C\\u4F8B\\u5982\\u8C03\\u7528\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"entry(\\\"fork\\\");\"), \"\\u4F1A\\u5F97\\u5230\\u4E00\\u4E0B\\u6C47\\u7F16\\uFF1A\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"text\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-text\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-text\"\n  }, \"fork:\\n li a7, SYS_fork\\n ecall\\n ret\"))), mdx(\"p\", null, \"\\u4ECE\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"xv6-book\"), \"\\u4E2D\\uFF0C\\u6211\\u4EEC\\u53EF\\u4EE5\\u77E5\\u9053\\uFF1A\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"ecall\"), \"\\u662F\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"rsic-v\"), \"\\u4E2D\\u7528\\u6765\\u4ECE\\u7528\\u6237\\u6001\\u8F6C\\u5230\\u7279\\u6743\\u6001\\u7684\\u6307\\u4EE4\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"a7\"), \"\\u7528\\u6765\\u4FDD\\u5B58\\u8981\\u8C03\\u7528\\u7684\\u7CFB\\u7EDF\\u8C03\\u7528\\u53F7\\u3002\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"SYS_fork\"), \"\\u5728\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"kernel/syscall.h\"), \"\\u4E2D\\u88AB\\u5B9A\\u4E49\\u3002\")), mdx(\"p\", null, \"\\u5728\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"ecall\"), \"\\u88AB\\u8C03\\u7528\\u65F6\\uFF0CRISC-V \\u7684 CPU \\u4F1A\\u8BBE\\u7F6E\\u4E00\\u4E9B\\u5BC4\\u5B58\\u5668\\uFF08\\u5982\\u5C06\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"pc\"), \"\\u4FDD\\u5B58\\u5728\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"sepc\"), \"\\uFF09\\uFF0C\\u7136\\u540E\\u5C06\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"stvec\"), \"\\u4FDD\\u5B58\\u5230\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"pc\"), \"\\u4E2D\\uFF0C\\u8FD9\\u65F6\\uFF0C\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"CPU\"), \"\\u5C31\\u4F1A\\u6267\\u884C\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"stvec\"), \"\\u6240\\u6307\\u5411\\u7684\\u4EE3\\u7801\\u4E86\\uFF0C\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"stvec\"), \"\\u5728\\u8FD4\\u56DE\\u7528\\u6237\\u6001\\u65F6\\u4F1A\\u88AB\\u8BBE\\u7F6E\\u6210\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"kernel/trampoline.S\"), \"\\u4E2D\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"uservec\"), \"\\uFF08\\u89C1\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"kernel/trap.c#L100\"), \"\\uFF09.\"), mdx(\"p\", null, mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"uservec\"), \"\\u7684\\u4E3B\\u8981\\u505A\\u4E86\\u4EE5\\u4E0B\\u51E0\\u4EF6\\u4E8B\\u60C5\\uFF1A\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u4EA4\\u6362\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"a0\"), \"\\u548C\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"sscratch\"), \"\\u5BC4\\u5B58\\u5668\\uFF0C\\u800C\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"sscratch\"), \"\\u662F\\u8FDB\\u7A0B\\u7528\\u6237\\u7A7A\\u95F4\\u7684\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"trapframe\"), \"\\u7684\\u865A\\u62DF\\u5730\\u5740\\uFF0C\\u6B64\\u65F6\\u5DF2\\u7ECF\\u5C06\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"a0\"), \"\\u4FDD\\u5B58\\u5230\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"sscratch\"), \"\\u5BC4\\u5B58\\u5668\\u4E2D\\u4E86\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u4FDD\\u5B58\\u5BC4\\u5B58\\u5668\\u5230\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"trapframe\"), \"\\u4E2D\\uFF08\\u5305\\u62EC\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"a0\"), \"\\uFF09\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u4ECE\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"trapframe\"), \"\\u4E2D\\u6062\\u590D\\u5185\\u6838\\u6808\\u3001\\u5207\\u6362\\u9875\\u8868\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u8DF3\\u8F6C\\u5230\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"usertrap\"), \"\\u4E2D\")), mdx(\"p\", null, mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"usertrap\"), \"\\uFF08\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"kernel/trap.c#32\"), \"\\uFF09\\u4E3B\\u8981\\u505A\\u4E86\\u4EE5\\u4E0B\\u51E0\\u4EF6\\u4E8B\\uFF1A\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u68C0\\u9A8C\\u662F\\u5426\\u4ECE\\u7528\\u6237\\u6001\\u8FDB\\u5165\\uFF08\\u901A\\u8FC7\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"sstatus\"), \"\\u786E\\u8BA4\\uFF09\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u8BBE\\u7F6E\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"stvec\"), \"\\u4E3A\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"kernelvec\"), \"\\uFF0C\\u4FDD\\u5B58\\u7528\\u6237\\u6001\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"pc\"), \"\\uFF08\\u5728\\u8C03\\u7528\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"ecall\"), \"\\u65F6\\u88AB\\u4FDD\\u5B58\\u5230\\u4E86\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"sepc\"), \"\\u4E2D\\u4E86\\uFF09\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u5173\\u4E2D\\u65AD\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u6267\\u884C\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"syscall\"), \"\\u8FDB\\u884C\\u7CFB\\u7EDF\\u8C03\\u7528\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u8C03\\u7528\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"usertrapret\"), \"\\u8FD4\\u56DE\")), mdx(\"p\", null, \"\\u524D\\u9762\\u7684\\u6B65\\u9AA4\\u5DF2\\u7ECF\\u5C06\\u7528\\u6237\\u6001\\u8F6C\\u6362\\u6210\\u5185\\u6838\\u6001\\uFF0C\\u5E76\\u5C06\\u9700\\u8981\\u4FDD\\u5B58\\u7684\\u4FE1\\u606F\\u4FDD\\u5B58\\u5230\\u5BF9\\u5E94\\u7684\\u4F4D\\u7F6E\\uFF0C\\u5E76\\u5C06\\u6808\\u548C\\u9875\\u8868\\u7B49\\u5207\\u6362\\u6210\\u5185\\u6838\\u6240\\u4F7F\\u7528\\u7684\\u6808\\u548C\\u9875\\u8868\\u4E86\\u3002\"), mdx(\"p\", null, mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"syscall\"), \"\\uFF08\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"kernel/syscall.c#133\"), \"\\uFF09\\u7684\\u4EE3\\u7801\\u5982\\u4E0B\\uFF1A\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"c\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-c\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-c\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"void\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"syscall\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"void\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"int\"), \" num\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"struct\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token class-name\"\n  }, \"proc\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"*\"), \"p \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"myproc\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\\n  num \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" p\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"trapframe\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"a7\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"if\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"num \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \">\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"&&\"), \" num \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"<\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"NELEM\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"syscalls\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"&&\"), \" syscalls\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"[\"), \"num\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"]\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n    p\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"trapframe\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"a0 \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" syscalls\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"[\"), \"num\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"]\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"else\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"printf\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\"%d %s: unknown sys call %d\\\\n\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"\\n            p\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"pid\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" p\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"name\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" num\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    p\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"trapframe\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"a0 \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"-\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), \"\\n\"))), mdx(\"p\", null, \"\\u53EF\\u4EE5\\u770B\\u5230\\u5728\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"syscall\"), \"\\u4E2D\\uFF0C\\u5B83\\u4ECE\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"a7\"), \"\\u53D6\\u51FA\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"system call number\"), \"\\uFF0C\\u5E76\\u8C03\\u7528\\u4E86\\u5BF9\\u5E94\\u7684\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"handler\"), \"\\uFF0C\\u7136\\u540E\\u628A\\u8FD4\\u56DE\\u503C\\u4FDD\\u5B58\\u5230\\u7528\\u6237\\u6001\\u7684\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"a0\"), \"\\u4E2D\\u3002\"), mdx(\"p\", null, \"\\u7CFB\\u7EDF\\u8C03\\u7528\\u8FD4\\u56DE\\u7684\\u8FC7\\u7A0B\\u6709\\u70B9\\u50CF\\u662F\\u521A\\u624D\\u7684\\u9006\\u8FC7\\u7A0B\\uFF0C\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"uservec\"), \"\\u548C\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"usertrap\"), \"\\u5206\\u522B\\u5BF9\\u5E94\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"userret\"), \"\\u548C\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"usertrapret\"), \"\\u3002\\u8FD9\\u91CC\\u4E0D\\u5728\\u8D58\\u8FF0\\u3002\"), mdx(\"p\", null, \"\\u603B\\u7ED3\\u4EE5\\u4E0B\\uFF0C\\u5F53\\u6211\\u4EEC\\u8C03\\u7528\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"fork()\"), \"\\u65F6\\u4F1A\\u53D1\\u751F\\u7684\\u4E8B\\u60C5\\u3002\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u901A\\u8FC7\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"usys.pl\"), \"\\u751F\\u6210\\u7684\\u6C47\\u7F16\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"fork()\"), \"\\u5C06\\u53C2\\u6570\\u653E\\u5230\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"a7\"), \"\\u4E2D\\uFF0C\\u5E76\\u8C03\\u7528\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"ecall\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u8C03\\u7528\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"ecall\"), \"\\u65F6\\uFF0CCPU \\u4F1A\\u6267\\u884C\\u4E00\\u4E9B\\u64CD\\u4F5C\\uFF08\\u4FDD\\u5B58\\u7528\\u6237\\u6001\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"pc\"), \"\\u5230\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"sepc\"), \"\\uFF0C\\u62F7\\u8D1D\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"stvec\"), \"\\u5230\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"pc\"), \"\\u4E2D\\uFF09\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u7531\\u4E8E\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"stvec\"), \"\\u5728\\u7528\\u6237\\u6001\\u65F6\\u6307\\u5411\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"uservec\"), \"\\uFF0C\\u6240\\u4EE5\\u4F1A\\u6267\\u884C\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"uservec\"), \"\\u6765\\u4FDD\\u5B58\\u5BC4\\u5B58\\u5668\\u3001\\u5207\\u6362\\u9875\\u8868\\u3001\\u6062\\u590D\\u5185\\u6838\\u5806\\u6808\\uFF0C\\u5E76\\u8DF3\\u8F6C\\u5230\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"usertrap\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"usertrap\"), \"\\u4F1A\\u5C06\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"stvec\"), \"\\u4FEE\\u6539\\u6210\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"kernelvec\"), \"\\uFF0C\\u5173\\u4E2D\\u65AD\\u8C03\\u7528\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"syscall\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"syscall\"), \"\\u4F1A\\u6839\\u636E\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"a7\"), \"\\u4E2D\\u4FDD\\u5B58\\u7684\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"system call number\"), \"\\u6765\\u8C03\\u7528\\u5BF9\\u5E94\\u7684\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"handler\"), \"\\uFF0C\\u6267\\u884C\\u5B8C\\u540E\\u8FD4\\u56DE\\u503C\\u4FDD\\u5B58\\u5728\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"a0\"), \"\\u4E2D\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"usertrap\"), \"\\u672B\\u5C3E\\u8C03\\u7528\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"usertrapret\"), \"\\uFF0C\\u800C\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"usertrapret\"), \"\\u4F1A\\u8DF3\\u8F6C\\u5230\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"userret\"), \"\\uFF0C\\u8FD9\\u4E24\\u4E2A\\u8FC7\\u7A0B\\u4F1A\\u9006\\u5411\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"uservec\"), \"\\u548C\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"usertrap\"), \"\\u7684\\u64CD\\u4F5C\\u3002\")), mdx(\"h2\", null, \"trace\"), mdx(\"p\", null, \"\\u7531\\u4E8E\\u524D\\u9762\\u5DF2\\u7ECF\\u5206\\u6790\\u8FC7\\u8C03\\u7528\\u7CFB\\u7EDF\\u8C03\\u7528\\u7684\\u8FC7\\u7A0B\\u4E86\\uFF0C\\u4F46\\u662F\\u6DFB\\u52A0\\u4E00\\u4E2A\\u7CFB\\u7EDF\\u8C03\\u7528\\u8FD8\\u662F\\u6709\\u6240\\u4E0D\\u540C\\u7684\\uFF0C\\u6211\\u4EEC\\u8981\\u8FDB\\u884C\\u4EE5\\u4E0B\\u6B65\\u9AA4\\uFF1A\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u5728\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"kernel/syscall.h\"), \"\\u4E2D\\u8BBE\\u7F6E\\u7CFB\\u7EDF\\u8C03\\u7528\\u53F7\\uFF0C\\u5982\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"#define SYS_trace 22\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u5728\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"kernel/syscall.c\"), \"\\u4E2D\\u7684\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"syscalls\"), \"\\u6570\\u7EC4\\u4E2D\\u8BBE\\u7F6E\\u5BF9\\u5E94\\u7684 handler \\u51FD\\u6570\\uFF0C\\u540C\\u65F6\\u9700\\u8981\\u5728\\u8BE5\\u6570\\u7EC4\\u7684\\u4E0A\\u65B9\\u52A0\\u5165\\u76F8\\u5173\\u7684\\u51FD\\u6570\\u58F0\\u660E\\uFF0C\\u5982\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"extern unit64 sys_trace(void);\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u5728\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"kernel/sysproc.c\"), \"\\u4E2D\\u5B9E\\u73B0\\u5BF9\\u5E94\\u7684 handler \\u51FD\\u6570\\uFF0C\\u5982\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"sys_trace\"), \"\\u51FD\\u6570\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u5728\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"user/user.h\"), \"\\u4E2D\\u6DFB\\u52A0\\u51FD\\u6570\\u58F0\\u660E\\uFF0C\\u5982\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"int trace(int);\")), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u5728\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"user/usys.pl\"), \"\\u6DFB\\u52A0\\u5BF9\\u5E94\\u7684\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"entry\"), \"\\u5DF2\\u751F\\u6210\\u76F8\\u5E94\\u7CFB\\u7EDF\\u8C03\\u7528\\u7684\\u6C47\\u7F16\\uFF0C\\u5982\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"entry(\\\"trace\\\");\"))), mdx(\"p\", null, \"\\u6DFB\\u52A0\\u5B8C\\u6210\\u540E\\uFF0C\\u6211\\u4EEC\\u53EF\\u4EE5\\u5C31\\u9700\\u8981\\u5B9E\\u73B0\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"kernel/sysproc.c\"), \"\\u4E2D\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"sys_trace\"), \"\\u7684\\u5B9E\\u73B0\\u4E86\\u3002\"), mdx(\"p\", null, \"\\u9996\\u5148\\uFF0C\\u9898\\u76EE\\u8981\\u6C42\\u6211\\u4EEC\\u80FD\\u591F\\u901A\\u8FC7\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"trace\"), \"\\u7CFB\\u7EDF\\u8C03\\u7528\\u6765\\u8BBE\\u7F6E\\u54EA\\u4E9B\\u7CFB\\u7EDF\\u8C03\\u7528\\u4F1A\\u88AB\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"trace\"), \"\\uFF0C\\u800C\\u4E14\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"trace\"), \"\\u7684\\u53C2\\u6570\\u4E5F\\u5DF2\\u7ECF\\u63D0\\u793A\\u6211\\u4EEC\\u8981\\u7528\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"1 << SYS_*\"), \"\\u7684\\u65B9\\u5F0F\\u6765\\u8BBE\\u7F6E\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"mask\"), \"\\u4E86\\uFF0C\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"mask\"), \"\\u5E94\\u8BE5\\u7531\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"trace\"), \"\\u547D\\u4EE4\\u6765\\u8BBE\\u7F6E\\u3002\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"trace\"), \"\\u5E94\\u8BE5\\u662F\\u53EA\\u65F6\\u5BF9\\u67D0\\u4E2A\\u8FDB\\u7A0B\\u6709\\u6548\\u7684\\uFF0C\\u6240\\u4EE5\\u8FD9\\u4E2A\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"mask\"), \"\\u5E94\\u8BE5\\u4E0E\\u8FDB\\u7A0B\\u7ED1\\u5B9A\\uFF0C\\u6240\\u4EE5\\u6211\\u4EEC\\u53EF\\u4EE5\\u5728\\u8FDB\\u7A0B\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"proc\"), \"\\u7ED3\\u6784\\u4F53\\u4E2D\\u52A0\\u5165\\u4E00\\u4E2A\\u65B0\\u7684\\u53D8\\u91CF\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"tracemask\"), \"\\u3002\\u7136\\u540E\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"sys_trace\"), \"\\u53EA\\u9700\\u8981\\u83B7\\u53D6\\u7528\\u6237\\u6001\\u4F20\\u5165\\u7684\\u53C2\\u6570\\uFF0C\\u5E76\\u8BBE\\u7F6E\\u8FDB\\u7A0B\\u7684\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"tracemask\"), \"\\u5373\\u53EF\\u3002\"), mdx(\"p\", null, mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"sys_trace\"), \"\\u7684\\u5B9E\\u73B0\\u5982\\u4E0B\\uFF1A\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"c\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-c\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-c\"\n  }, \"uint64\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"sys_trace\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"void\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"int\"), \" mask\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"if\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"argint\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"&\"), \"mask\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"<\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \"\\n        \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"return\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"-\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"myproc\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"tracemask \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" mask\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"return\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\")))), mdx(\"p\", null, \"\\u4ECE\\u4E0A\\u9762\\u5173\\u4E8E\\u7CFB\\u7EDF\\u8C03\\u7528\\u7684\\u5206\\u6790\\u53EF\\u4EE5\\u77E5\\u9053\\uFF0C\\u6BCF\\u4E2A\\u7CFB\\u7EDF\\u8C03\\u7528\\u7684 handler \\u90FD\\u4F1A\\u7531\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"syscall\"), \"\\u6765\\u8C03\\u7528\\uFF0C\\u6240\\u4EE5\\u6211\\u4EEC\\u53EF\\u4EE5\\u5728\\u4FEE\\u6539\\u8FD9\\u4E2A\\u51FD\\u6570\\u6765\\u5B9E\\u73B0\\u6BCF\\u6B21\\u7CFB\\u7EDF\\u8C03\\u7528 handler \\u8FD4\\u56DE\\u540E\\u90FD\\u8F93\\u51FA\\u5BF9\\u5E94\\u7684\\u4FE1\\u606F\\u3002\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"pid\"), \"\\u548C\\u7CFB\\u7EDF\\u8C03\\u7528\\u8FD4\\u56DE\\u503C\\u90FD\\u53EF\\u4EE5\\u76F4\\u63A5\\u83B7\\u53D6\\u5230\\uFF0C\\u800C\\u7CFB\\u7EDF\\u8C03\\u7528\\u540D\\u79F0\\u5219\\u9700\\u8981\\u81EA\\u5DF1\\u624B\\u52A8\\u5199\\u4E00\\u4E2A\\u5B57\\u7B26\\u4E32\\u6570\\u7EC4\\u6765\\u6620\\u5C04\\u3002\\u4E0B\\u9762\\u662F\\u5B9E\\u73B0\\u4EE3\\u7801\\uFF1A\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"c\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-c\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-c\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"void\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"syscall\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"void\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"int\"), \" num\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"struct\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token class-name\"\n  }, \"proc\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"*\"), \"p \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"myproc\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\\n  num \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" p\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"trapframe\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"a7\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"if\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"num \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \">\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"&&\"), \" num \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"<\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"NELEM\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"syscalls\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"&&\"), \" syscalls\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"[\"), \"num\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"]\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n    p\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"trapframe\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"a0 \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" syscalls\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"[\"), \"num\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"]\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"if\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"!\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"!\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"<<\"), \" num  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"&\"), \" p\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"tracemask\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n        \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"printf\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\"%d: syscall %s -> %d\\\\n\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" p\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"pid\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" syscall_name\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"[\"), \"num\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"]\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" p\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"trapframe\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"a0\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"else\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"printf\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token string\"\n  }, \"\\\"%d %s: unknown sys call %d\\\\n\\\"\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \"\\n            p\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"pid\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" p\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"name\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" num\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    p\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"trapframe\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"a0 \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"-\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), \"\\n\"))), mdx(\"p\", null, \"\\u7531\\u4E8E\\u9898\\u76EE\\u8981\\u6C42\\u67D0\\u4E2A\\u8FDB\\u7A0B\\u88AB\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"trace\"), \"\\u540E\\uFF0C\\u5176\\u5B50\\u8FDB\\u7A0B\\u4E5F\\u8981\\u88AB\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"trace\"), \"\\uFF0C\\u6240\\u4EE5\\u6211\\u4EEC\\u53EA\\u9700\\u8981\\u5728\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"fork\"), \"\\u4E2D\\u7B80\\u5355\\u7684\\u6DFB\\u52A0\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"np->tracemask = p->tracemask\"), \"\\u5373\\u53EF\\u3002\"), mdx(\"h2\", null, \"sysinfo\"), mdx(\"p\", null, \"\\u8FD9\\u91CC\\u8981\\u589E\\u52A0\\u4E00\\u4E2A\\u7CFB\\u7EDF\\u8C03\\u7528\\u6765\\u5B9E\\u73B0\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"sysinfo\"), \"\\uFF0C\\u56E0\\u4E3A\\u524D\\u9762\\u5DF2\\u7ECF\\u63CF\\u8FF0\\u8FC7\\u7ED9\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"xv6\"), \"\\u589E\\u52A0\\u7CFB\\u7EDF\\u8C03\\u7528\\u7684\\u8FC7\\u7A0B\\u4E86\\uFF0C\\u8FD9\\u91CC\\u4E0D\\u5728\\u8D58\\u8FF0\\u3002\"), mdx(\"p\", null, \"\\u56E0\\u4E3A\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"sysinfo\"), \"\\u9700\\u8981\\u4F20\\u5165\\u4E00\\u4E2A\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"struct sysinfo\"), \"\\u7684\\u6307\\u9488\\uFF0C\\u7136\\u540E\\u901A\\u8FC7\\u8FD9\\u4E2A\\u6307\\u9488\\u8FD4\\u56DE\\u4E00\\u4E2A\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"struct sysinfo\"), \"\\uFF0C\\u8FD9\\u4E2A\\u7ED3\\u6784\\u4F53\\u4E3B\\u8981\\u5305\\u542B\\u4E24\\u4E2A\\u5C5E\\u6027\\uFF1A\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"freemem\"), \"\\u548C\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"nproc\"), \"\\uFF0C\\u5373\\u5F53\\u524D\\u7A7A\\u95F2\\u5185\\u5B58\\u548C\\u5F53\\u524D\\u72B6\\u6001\\u4E0D\\u4E3A\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"UNUSED\"), \"\\u7684\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"proc\"), \"\\u6570\\u91CF\\u3002\\u6240\\u4EE5\\u8FD9\\u4E2A\\u5B9E\\u9A8C\\u4E3B\\u8981\\u8981\\u89E3\\u51B3\\u4E09\\u4E2A\\u95EE\\u9898\\uFF1A\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u8BA1\\u7B97\\u5F53\\u524D\\u7A7A\\u95F2\\u5185\\u5B58\\u5927\\u5C0F\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u8BA1\\u7B97\\u5F53\\u524D\\u72B6\\u6001\\u4E0D\\u4E3A\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"UNUSED\"), \"\\u7684\", mdx(\"code\", {\n    parentName: \"li\",\n    \"className\": \"language-text\"\n  }, \"proc\"), \"\\u6570\\u91CF\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u5C06\\u8BA1\\u7B97\\u5F97\\u5230\\u7684\\u503C\\u4ECE\\u5185\\u6838\\u6001\\u62F7\\u8D1D\\u5230\\u7528\\u6237\\u6001\\u3002\")), mdx(\"h3\", null, \"freemem\"), mdx(\"p\", null, \"\\u5728\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"kernel/kalloc.c\"), \"\\u4EE3\\u7801\\u4E2D\\u53EF\\u4EE5\\u770B\\u5230\\uFF1A\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"c\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-c\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-c\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"struct\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token class-name\"\n  }, \"run\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"struct\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token class-name\"\n  }, \"run\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"*\"), \"next\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"struct\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"struct\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token class-name\"\n  }, \"spinlock\"), \" lock\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"struct\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token class-name\"\n  }, \"run\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"*\"), \"freelist\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), \" kmem\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\")))), mdx(\"p\", null, \"\\u8FD9\\u91CC\\u6709\\u4E00\\u4E2A\\u5168\\u5C40\\u53D8\\u91CF\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"kmem\"), \"\\uFF0C\\u5979\\u5305\\u542B\\u4E86\\u4E00\\u4E2A\\u540D\\u4E3A\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"freelist\"), \"\\u7684\\u94FE\\u8868\\u6307\\u9488\\u548C\\u4FDD\\u62A4\\u8BE5\\u94FE\\u8868\\u7684\\u9501\\u3002\\u4ECE\\u5176\\u4ED6\\u76F8\\u5173\\u4EE3\\u7801\\u53EF\\u4EE5\\u770B\\u51FA\\u8FD9\\u4E2A\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"freelist\"), \"\\u6240\\u4EE3\\u8868\\u7684\\u94FE\\u8868\\u662F\\u7A7A\\u95F2\\u9875\\uFF0C\\u6BCF\\u4E00\\u4E2A\\u7A7A\\u95F2\\u9875\\u7684\\u5F00\\u5934\\u90FD\\u4FDD\\u5B58\\u7740\\u4E0B\\u4E00\\u4E2A\\u7A7A\\u95F2\\u9875\\u7684\\u4F4D\\u7F6E\\uFF0C\\u7531\\u4E8E\\u6BCF\\u4E00\\u9875\\u7684\\u5927\\u5C0F\\u90FD\\u662F\\u56FA\\u5B9A\\u7684\\uFF0C\\u5DF2\\u77E5\\u7684\\uFF08\\u7531\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"PGSIZE\"), \"\\u786E\\u5B9A\\uFF09\\uFF0C\\u6240\\u4EE5\\u901A\\u8FC7\\u904D\\u5386\\u4E00\\u4E2A\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"freelist\"), \"\\u53EF\\u4EE5\\u8BA1\\u7B97\\u51FA\\u7A7A\\u95F2\\u5185\\u5B58\\u5927\\u5C0F\\u3002\\u8FD9\\u4E2A\\u8981\\u4E3B\\u8981\\u7684\\u662F\\u5728\\u904D\\u5386\\u94FE\\u8868\\u65F6\\uFF0C\\u9700\\u8981\\u60F3\\u83B7\\u53D6\\u9501\\u3002\\u5B9E\\u73B0\\u4EE3\\u7801\\u5982\\u4E0B\\uFF1A\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"c\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-c\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-c\"\n  }, \"uint64\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"kfreemem\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"void\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n    uint64 size \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"struct\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token class-name\"\n  }, \"run\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"*\"), \"r\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"acquire\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"&\"), \"kmem\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \".\"), \"lock\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"for\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"r \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" kmem\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \".\"), \"freelist \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \" r \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \" r \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" r\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"next\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \"\\n        size \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"+=\"), \" PGSIZE\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"release\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"&\"), \"kmem\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \".\"), \"lock\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"return\"), \" size\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), \"\\n\"))), mdx(\"h3\", null, \"nproc\"), mdx(\"p\", null, \"\\u4ECE\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"kernel/proc.c\"), \"\\u53EF\\u4EE5\\u770B\\u51FA\\u6765\\u5185\\u6838\\u4E2D\\u53EF\\u7528\\u7684\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"struct proc\"), \"\\u662F\\u7531\\u4E00\\u4E2A\\u6570\\u7EC4\\u5B58\\u50A8\\u7684\\uFF0C\\u6211\\u4EEC\\u53EF\\u4EE5\\u7B80\\u5355\\u7684\\u904D\\u5386\\u8FD9\\u4E2A\\u6570\\u7EC4\\uFF0C\\u7136\\u540E\\u5224\\u65AD\\u6BCF\\u4E2A\\u5143\\u7D20\\u7684\\u72B6\\u6001\\u662F\\u5426\\u4E3A\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"UNUSED\"), \"\\uFF0C\\u7136\\u540E\\u8BA1\\u6570\\u5373\\u53EF\\u3002\\u4EE3\\u7801\\u5982\\u4E0B\\uFF1A\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"c\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-c\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-c\"\n  }, \"uint64\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"nproc\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"void\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n    uint64 n \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"struct\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token class-name\"\n  }, \"proc\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"*\"), \"p\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"for\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"p \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" proc\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"p \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"<\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"&\"), \"proc\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"[\"), \"NPROC\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"]\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \" p\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"++\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n        \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"if\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"p\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"state \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"!=\"), \" UNUSED\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \"\\n            n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"++\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"return\"), \" n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\")))), mdx(\"h3\", null, \"copyout\"), mdx(\"p\", null, \"\\u7531\\u4E8E\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"sys_sysinfo\"), \"\\u7CFB\\u7EDF\\u8C03\\u7528\\u8BFB\\u5230\\u7684\\u5730\\u5740\\u662F\\u7528\\u6237\\u6001\\u7684\\u865A\\u62DF\\u5730\\u5740\\uFF0C\\u6240\\u4EE5\\u4E0D\\u80FD\\u5728\\u5185\\u6838\\u76F4\\u63A5\\u4F7F\\u7528\\uFF0C\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"copyout\"), \"\\u51FD\\u6570\\u6765\\u5C06\\u5185\\u5B58\\u4E2D\\u7684\\u6570\\u636E\\u62F7\\u8D1D\\u5230\\u7528\\u6237\\u6001\\u3002\\u4ECE\\u5B9E\\u9A8C\\u7ED9\\u51FA\\u7684\\u63D0\\u793A\\u53EF\\u4EE5\\u770B\\u51FA\\uFF0C\\u53EF\\u4EE5\\u4ECE\\u53C2\\u8003\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"sys_fstat\"), \"\\u548C\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"filestat\"), \"\\u6765\\u4F7F\\u7528\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"copyout\"), \"\\u3002\\u7531\\u4E8E\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"sys_fstat\"), \"\\u53EA\\u6D89\\u53CA\\u5230\\u8BFB\\u53D6\\u53C2\\u6570\\u548C\\u8C03\\u7528\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"filestat\"), \"\\uFF0C\\u6240\\u4EE5\\u8FD9\\u91CC\\u53EA\\u7ED9\\u51FA\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"filestat\"), \"\\u7684\\u4EE3\\u7801\\uFF0C\\u5B83\\u7684\\u7B2C\\u4E8C\\u4E2A\\u53C2\\u6570\\u5C31\\u662F\\u7528\\u6237\\u6001\\u7684\\u5730\\u5740\\u3002\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"c\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-c\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-c\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"// Get metadata about file f.\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"// addr is a user virtual address, pointing to a struct stat.\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"int\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"filestat\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"struct\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token class-name\"\n  }, \"file\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"*\"), \"f\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" uint64 addr\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"struct\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token class-name\"\n  }, \"proc\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"*\"), \"p \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"myproc\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"struct\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token class-name\"\n  }, \"stat\"), \" st\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"if\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"f\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"type \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"==\"), \" FD_INODE \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"||\"), \" f\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"type \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"==\"), \" FD_DEVICE\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"ilock\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"f\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"ip\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"stati\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"f\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"ip\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"&\"), \"st\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"iunlock\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"f\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"ip\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"if\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"copyout\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"p\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"pagetable\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" addr\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"char\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"*\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"&\"), \"st\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"sizeof\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"st\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"<\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \"\\n      \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"return\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"-\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"return\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), \"\\n  \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"return\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"-\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\")))), mdx(\"p\", null, \"\\u4E0A\\u9762\\u7684\\u4EE3\\u7801\\u5173\\u952E\\u5728\\u4E8E\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"copyout(p->pagetable, add, (char*)&st, sizeof(st))\"), \"\\uFF0C\\u8FD9\\u91CC\\u53EF\\u4EE5\\u770B\\u51FA\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"copyout\"), \"\\u662F\\u901A\\u8FC7\\u8FDB\\u7A0B\\u7684\\u9875\\u8868\\u6765\\u8BA1\\u7B97\\u5B9E\\u5730\\u5740\\u7684\\u4F4D\\u7F6E\\u3002\"), mdx(\"p\", null, \"\\u56E0\\u6B64\\uFF0C\\u6211\\u4EEC\\u53EF\\u4EE5\\u5199\\u51FA\", mdx(\"code\", {\n    parentName: \"p\",\n    \"className\": \"language-text\"\n  }, \"sys_sysinfo\"), \"\\u7684\\u4EE3\\u7801\\u5982\\u4E0B\\uFF1A\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"c\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-c\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-c\"\n  }, \"uint64\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"sys_sysinfo\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"void\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"{\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"struct\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token class-name\"\n  }, \"sysinfo\"), \" info\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"struct\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token class-name\"\n  }, \"proc\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"*\"), \"p \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"myproc\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    uint64 pinfo\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"if\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"argaddr\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"&\"), \"pinfo\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"<\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \"\\n        \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"return\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"-\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\\n    info\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \".\"), \"freemem \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"kfreemem\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    info\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \".\"), \"nproc \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"=\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"nproc\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\\n\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"if\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"copyout\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"p\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"->\"), \"pagetable\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" pinfo\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"char\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"*\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"&\"), \"info\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \",\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"sizeof\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"(\"), \"info\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"<\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \")\"), \"\\n        \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"return\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"-\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"1\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n    \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token keyword\"\n  }, \"return\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token number\"\n  }, \"0\"), mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \";\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token punctuation\"\n  }, \"}\"), \"\\n\"))));\n}\n;\nMDXContent.isMDXComponent = true;","excerpt":"6.S081 的第二个实验，system calls，虽然是好久之前做的了，但是一直没把它放到博客里面。今天略无聊，就弄了一下。BTW，第三个实验我到现在都还没开始呢。 system call…","frontmatter":{"title":"6.S081 lab2 system calls","tags":["OS","6.S081","xv6","RISC-V"],"date":"2020-12-14T15:20:55.000Z","categories":["Blog"]},"fields":{"slug":"/posts/2020/12/14/6s081-lab2-system-calls/"}}},"pageContext":{"slug":"/posts/2020/12/14/6s081-lab2-system-calls/"}},
    "staticQueryHashes": ["163584858","1656825683","63159454"]}