diff --git a/public/index.html b/public/index.html index 28d75545..de9ebd48 100644 --- a/public/index.html +++ b/public/index.html @@ -25,7 +25,7 @@

7. IPCOS API doc

8. SyncMutexOS API doc

9. DeviceOS API doc

-

9. main-branch OS API doc

+

10. main-branch OS API doc

diff --git a/public/main/.lock b/public/main/.lock deleted file mode 100755 index e69de29b..00000000 diff --git a/public/main/COPYRIGHT.txt b/public/main/COPYRIGHT.txt deleted file mode 100644 index c2629a83..00000000 --- a/public/main/COPYRIGHT.txt +++ /dev/null @@ -1,50 +0,0 @@ -These documentation pages include resources by third parties. This copyright -file applies only to those resources. The following third party resources are -included, and carry their own copyright notices and license terms: - -* Fira Sans (FiraSans-Regular.woff2, FiraSans-Medium.woff2, - FiraSans-Regular.woff, FiraSans-Medium.woff): - - Copyright (c) 2014, Mozilla Foundation https://mozilla.org/ - with Reserved Font Name Fira Sans. - - Copyright (c) 2014, Telefonica S.A. - - Licensed under the SIL Open Font License, Version 1.1. - See FiraSans-LICENSE.txt. - -* rustdoc.css, main.js, and playpen.js: - - Copyright 2015 The Rust Developers. - Licensed under the Apache License, Version 2.0 (see LICENSE-APACHE.txt) or - the MIT license (LICENSE-MIT.txt) at your option. - -* normalize.css: - - Copyright (c) Nicolas Gallagher and Jonathan Neal. - Licensed under the MIT license (see LICENSE-MIT.txt). - -* Source Code Pro (SourceCodePro-Regular.ttf.woff2, - SourceCodePro-Semibold.ttf.woff2, SourceCodePro-It.ttf.woff2, - SourceCodePro-Regular.ttf.woff, SourceCodePro-Semibold.ttf.woff, - SourceCodePro-It.ttf.woff): - - Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), - with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark - of Adobe Systems Incorporated in the United States and/or other countries. - - Licensed under the SIL Open Font License, Version 1.1. - See SourceCodePro-LICENSE.txt. - -* Source Serif 4 (SourceSerif4-Regular.ttf.woff2, SourceSerif4-Bold.ttf.woff2, - SourceSerif4-It.ttf.woff2, SourceSerif4-Regular.ttf.woff, - SourceSerif4-Bold.ttf.woff, SourceSerif4-It.ttf.woff): - - Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name - 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United - States and/or other countries. - - Licensed under the SIL Open Font License, Version 1.1. - See SourceSerif4-LICENSE.md. - -This copyright file is intended to be distributed with rustdoc output. diff --git a/public/main/FiraSans-LICENSE.txt b/public/main/FiraSans-LICENSE.txt deleted file mode 100644 index ff9afab0..00000000 --- a/public/main/FiraSans-LICENSE.txt +++ /dev/null @@ -1,94 +0,0 @@ -Digitized data copyright (c) 2012-2015, The Mozilla Foundation and Telefonica S.A. -with Reserved Font Name < Fira >, - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/public/main/FiraSans-Medium.woff b/public/main/FiraSans-Medium.woff deleted file mode 100644 index 7d742c5f..00000000 Binary files a/public/main/FiraSans-Medium.woff and /dev/null differ diff --git a/public/main/FiraSans-Medium.woff2 b/public/main/FiraSans-Medium.woff2 deleted file mode 100644 index 7a1e5fc5..00000000 Binary files a/public/main/FiraSans-Medium.woff2 and /dev/null differ diff --git a/public/main/FiraSans-Regular.woff b/public/main/FiraSans-Regular.woff deleted file mode 100644 index d8e0363f..00000000 Binary files a/public/main/FiraSans-Regular.woff and /dev/null differ diff --git a/public/main/FiraSans-Regular.woff2 b/public/main/FiraSans-Regular.woff2 deleted file mode 100644 index e766e06c..00000000 Binary files a/public/main/FiraSans-Regular.woff2 and /dev/null differ diff --git a/public/main/LICENSE-APACHE.txt b/public/main/LICENSE-APACHE.txt deleted file mode 100644 index 16fe87b0..00000000 --- a/public/main/LICENSE-APACHE.txt +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/public/main/LICENSE-MIT.txt b/public/main/LICENSE-MIT.txt deleted file mode 100644 index 31aa7938..00000000 --- a/public/main/LICENSE-MIT.txt +++ /dev/null @@ -1,23 +0,0 @@ -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/public/main/NanumBarunGothic-LICENSE.txt b/public/main/NanumBarunGothic-LICENSE.txt deleted file mode 100644 index 0bf46682..00000000 --- a/public/main/NanumBarunGothic-LICENSE.txt +++ /dev/null @@ -1,99 +0,0 @@ -Copyright (c) 2010, NAVER Corporation (https://www.navercorp.com/), - -with Reserved Font Name Nanum, Naver Nanum, NanumGothic, Naver NanumGothic, -NanumMyeongjo, Naver NanumMyeongjo, NanumBrush, Naver NanumBrush, NanumPen, -Naver NanumPen, Naver NanumGothicEco, NanumGothicEco, Naver NanumMyeongjoEco, -NanumMyeongjoEco, Naver NanumGothicLight, NanumGothicLight, NanumBarunGothic, -Naver NanumBarunGothic, NanumSquareRound, NanumBarunPen, MaruBuri - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/public/main/NanumBarunGothic.ttf.woff b/public/main/NanumBarunGothic.ttf.woff deleted file mode 100644 index fb063e8f..00000000 Binary files a/public/main/NanumBarunGothic.ttf.woff and /dev/null differ diff --git a/public/main/NanumBarunGothic.ttf.woff2 b/public/main/NanumBarunGothic.ttf.woff2 deleted file mode 100644 index 1866ad4b..00000000 Binary files a/public/main/NanumBarunGothic.ttf.woff2 and /dev/null differ diff --git a/public/main/SourceCodePro-It.ttf.woff b/public/main/SourceCodePro-It.ttf.woff deleted file mode 100644 index 8d68f2fe..00000000 Binary files a/public/main/SourceCodePro-It.ttf.woff and /dev/null differ diff --git a/public/main/SourceCodePro-It.ttf.woff2 b/public/main/SourceCodePro-It.ttf.woff2 deleted file mode 100644 index 462c34ef..00000000 Binary files a/public/main/SourceCodePro-It.ttf.woff2 and /dev/null differ diff --git a/public/main/SourceCodePro-LICENSE.txt b/public/main/SourceCodePro-LICENSE.txt deleted file mode 100644 index 07542572..00000000 --- a/public/main/SourceCodePro-LICENSE.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. - -This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/public/main/SourceCodePro-Regular.ttf.woff b/public/main/SourceCodePro-Regular.ttf.woff deleted file mode 100644 index 7be076e1..00000000 Binary files a/public/main/SourceCodePro-Regular.ttf.woff and /dev/null differ diff --git a/public/main/SourceCodePro-Regular.ttf.woff2 b/public/main/SourceCodePro-Regular.ttf.woff2 deleted file mode 100644 index 10b558e0..00000000 Binary files a/public/main/SourceCodePro-Regular.ttf.woff2 and /dev/null differ diff --git a/public/main/SourceCodePro-Semibold.ttf.woff b/public/main/SourceCodePro-Semibold.ttf.woff deleted file mode 100644 index 61bc67b8..00000000 Binary files a/public/main/SourceCodePro-Semibold.ttf.woff and /dev/null differ diff --git a/public/main/SourceCodePro-Semibold.ttf.woff2 b/public/main/SourceCodePro-Semibold.ttf.woff2 deleted file mode 100644 index 5ec64eef..00000000 Binary files a/public/main/SourceCodePro-Semibold.ttf.woff2 and /dev/null differ diff --git a/public/main/SourceSerif4-Bold.ttf.woff b/public/main/SourceSerif4-Bold.ttf.woff deleted file mode 100644 index 8ad41888..00000000 Binary files a/public/main/SourceSerif4-Bold.ttf.woff and /dev/null differ diff --git a/public/main/SourceSerif4-Bold.ttf.woff2 b/public/main/SourceSerif4-Bold.ttf.woff2 deleted file mode 100644 index db57d214..00000000 Binary files a/public/main/SourceSerif4-Bold.ttf.woff2 and /dev/null differ diff --git a/public/main/SourceSerif4-It.ttf.woff b/public/main/SourceSerif4-It.ttf.woff deleted file mode 100644 index 2a34b5c4..00000000 Binary files a/public/main/SourceSerif4-It.ttf.woff and /dev/null differ diff --git a/public/main/SourceSerif4-It.ttf.woff2 b/public/main/SourceSerif4-It.ttf.woff2 deleted file mode 100644 index 1cbc021a..00000000 Binary files a/public/main/SourceSerif4-It.ttf.woff2 and /dev/null differ diff --git a/public/main/SourceSerif4-LICENSE.md b/public/main/SourceSerif4-LICENSE.md deleted file mode 100644 index 68ea1892..00000000 --- a/public/main/SourceSerif4-LICENSE.md +++ /dev/null @@ -1,93 +0,0 @@ -Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. - -This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/public/main/SourceSerif4-Regular.ttf.woff b/public/main/SourceSerif4-Regular.ttf.woff deleted file mode 100644 index 45a5521a..00000000 Binary files a/public/main/SourceSerif4-Regular.ttf.woff and /dev/null differ diff --git a/public/main/SourceSerif4-Regular.ttf.woff2 b/public/main/SourceSerif4-Regular.ttf.woff2 deleted file mode 100644 index 2db73fe2..00000000 Binary files a/public/main/SourceSerif4-Regular.ttf.woff2 and /dev/null differ diff --git a/public/main/ayu.css b/public/main/ayu.css deleted file mode 100644 index dea87bf1..00000000 --- a/public/main/ayu.css +++ /dev/null @@ -1 +0,0 @@ - body{background-color:#0f1419;color:#c5c5c5;}h1,h2,h3,h4{color:white;}h1.fqn{border-bottom-color:#5c6773;}h1.fqn a{color:#fff;}h2,h3,h4{border-bottom-color:#5c6773;}h4{border:none;}.in-band{background-color:#0f1419;}.invisible{background:rgba(0,0,0,0);}.docblock code{color:#ffb454;}.code-header{color:#e6e1cf;}.docblock pre>code,pre>code{color:#e6e1cf;}span code{color:#e6e1cf;}.docblock a>code{color:#39AFD7 !important;}.docblock code,.docblock-short code{background-color:#191f26;}pre,.rustdoc.source .example-wrap{color:#e6e1cf;background-color:#191f26;}.sidebar{background-color:#14191f;}.rust-logo{filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);}*{scrollbar-color:#5c6773 #24292f;}.sidebar{scrollbar-color:#5c6773 #24292f;}::-webkit-scrollbar-track{background-color:transparent;}::-webkit-scrollbar-thumb{background-color:#5c6773;}.sidebar::-webkit-scrollbar-track{background-color:transparent;}.sidebar::-webkit-scrollbar-thumb{background-color:#5c6773;}.sidebar .current{background-color:transparent;color:#ffb44c;}.source .sidebar{background-color:#14191f;}.sidebar .location{border-color:#000;background-color:#0f1419;color:#fff;}.sidebar-elems .location{color:#ff7733;}.sidebar-elems .location a{color:#fff;}.sidebar .version{border-bottom-color:#424c57;}.sidebar-title{border-top-color:#5c6773;border-bottom-color:#5c6773;}.block a:hover{background:transparent;color:#ffb44c;}.line-numbers span{color:#5c6773;}.line-numbers .line-highlighted{color:#708090;background-color:rgba(255,236,164,0.06);padding-right:4px;border-right:1px solid #ffb44c;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom-color:#5c6773;}.docblock table td,.docblock table th{border-color:#5c6773;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#c5c5c5;}.search-results a:hover{background-color:#777;}.search-results a:focus{color:#000 !important;background-color:#c6afb3;}.search-results a{color:#0096cf;}.search-results a div.desc{color:#c5c5c5;}.content .item-info::before{color:#ccc;}.content span.foreigntype,.content a.foreigntype{color:#ffa0a5;}.content span.union,.content a.union{color:#ffa0a5;}.content span.constant,.content a.constant,.content span.static,.content a.static{color:#39AFD7;}.content span.primitive,.content a.primitive{color:#ffa0a5;}.content span.traitalias,.content a.traitalias{color:#39AFD7;}.content span.keyword,.content a.keyword{color:#39AFD7;}.content span.externcrate,.content span.mod,.content a.mod{color:#39AFD7;}.content span.struct,.content a.struct{color:#ffa0a5;}.content span.enum,.content a.enum{color:#ffa0a5;}.content span.trait,.content a.trait{color:#39AFD7;}.content span.type,.content a.type{color:#39AFD7;}.content span.type,.content a.type,.block a.current.type{color:#39AFD7;}.content span.associatedtype,.content a.associatedtype,.block a.current.associatedtype{color:#39AFD7;}.content span.fn,.content a.fn,.content span.method,.content a.method,.content span.tymethod,.content a.tymethod,.content .fnname{color:#fdd687;}.content span.attr,.content a.attr,.content span.derive,.content a.derive,.content span.macro,.content a.macro{color:#a37acc;}pre.rust .comment{color:#788797;}pre.rust .doccomment{color:#a1ac88;}nav:not(.sidebar){border-bottom-color:#424c57;}nav.main .current{border-top-color:#5c6773;border-bottom-color:#5c6773;}nav.main .separator{border:1px solid #5c6773;}a{color:#39AFD7;}a#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,pre.rust a,.sidebar a,.in-band a{color:#c5c5c5;}.search-results a{color:#0096cf;}body.source .example-wrap pre.rust a{background:#333;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}details.rustdoc-toggle>summary::before,details.undocumented>summary::before{filter:invert(100%);}#crate-search{color:#c5c5c5;background-color:#141920;box-shadow:0 0 0 1px #424c57,0 0 0 2px transparent;border-color:#424c57;}.search-input{color:#ffffff;background-color:#141920;box-shadow:0 0 0 1px #424c57,0 0 0 2px transparent;transition:box-shadow 150ms ease-in-out;}#crate-search+.search-input:focus{box-shadow:0 0 0 1px #148099,0 0 0 2px transparent;}.module-item .stab,.import-item .stab{color:#000;}.stab.unstable,.stab.deprecated,.stab.portability{color:#c5c5c5;background:#314559 !important;border-style:none !important;border-radius:4px;padding:3px 6px 3px 6px;}.stab.portability>code{color:#e6e1cf;background:none;}#help>div{background:#14191f;box-shadow:0px 6px 20px 0px black;border:none;border-radius:4px;}#help span.bottom,#help span.top{border-color:#5c6773;}.rightside,.out-of-band{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:#788797;}.line-numbers :target{background-color:transparent;}pre.rust .number,pre.rust .string{color:#b8cc52;}pre.rust .kw,pre.rust .kw-2,pre.rust .prelude-ty,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .op,pre.rust .lifetime{color:#ff7733;}pre.rust .macro,pre.rust .macro-nonterminal{color:#a37acc;}pre.rust .question-mark{color:#ff9011;}pre.rust .self{color:#36a3d9;font-style:italic;}pre.rust .attribute{color:#e6e1cf;}pre.rust .attribute .ident,pre.rust .attribute .op{color:#e6e1cf;}.example-wrap>pre.line-number{color:#5c67736e;border:none;}a.test-arrow{font-size:100%;color:#788797;border-radius:4px;background-color:rgba(57,175,215,0.09);}a.test-arrow:hover{background-color:rgba(57,175,215,0.368);color:#c5c5c5;}.toggle-label,.code-attribute{color:#999;}:target{background:rgba(255,236,164,0.06);border-right:3px solid rgba(255,180,76,0.85);}pre.compile_fail{border-left:2px solid rgba(255,0,0,.4);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.4);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.5);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.5);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#39AFD7;}.tooltip::after{background-color:#314559;color:#c5c5c5;border:1px solid #5c6773;}.tooltip::before{border-color:transparent #314559 transparent transparent;}.notable-traits-tooltiptext{background-color:#314559;border-color:#5c6773;}.notable-traits-tooltiptext .notable{border-bottom-color:#5c6773;}#titles>button.selected{background-color:#141920 !important;border-bottom:1px solid #ffb44c !important;border-top:none;}#titles>button:not(.selected){background-color:transparent !important;border:none;}#titles>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}#titles>button>div.count{color:#888;}.search-input:focus{}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{}.content span.struct,.content a.struct,.block a.current.struct{}#titles>button:hover,#titles>button.selected{}.content span.typedef,.content a.typedef,.block a.current.typedef{}.content span.union,.content a.union,.block a.current.union{}pre.rust .lifetime{}.stab.unstable{}h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod){}.content span.enum,.content a.enum,.block a.current.enum{}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{}.content span.keyword,.content a.keyword,.block a.current.keyword{}pre.rust .comment{}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{}pre.rust .kw{}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{}pre.rust .doccomment{}.stab.deprecated{}.content a.attr,.content a.derive,.content a.macro{}.stab.portability{}.content span.primitive,.content a.primitive,.block a.current.primitive{}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{}pre.rust .kw-2,pre.rust .prelude-ty{}.content span.trait,.content a.trait,.block a.current.trait{}.search-results a:focus span{}a.result-trait:focus{}a.result-traitalias:focus{}a.result-mod:focus,a.result-externcrate:focus{}a.result-mod:focus{}a.result-externcrate:focus{}a.result-enum:focus{}a.result-struct:focus{}a.result-union:focus{}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{}a.result-type:focus{}a.result-associatedtype:focus{}a.result-foreigntype:focus{}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{}a.result-constant:focus,a.result-static:focus{}a.result-primitive:focus{}a.result-keyword:focus{}@media (max-width:700px){.sidebar-menu{background-color:#14191f;border-bottom-color:#5c6773;border-right-color:#5c6773;}.sidebar-elems{background-color:#14191f;border-right-color:#5c6773;}#sidebar-filler{background-color:#14191f;border-bottom-color:#5c6773;}}kbd{color:#c5c5c5;background-color:#314559;border-color:#5c6773;border-bottom-color:#5c6773;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#5c6773;background-color:#0f1419;color:#fff;}#theme-picker>img,#settings-menu>img{filter:invert(100);}#copy-path{color:#fff;}#copy-path>img{filter:invert(70%);}#copy-path:hover>img{filter:invert(100%);}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#e0e0e0;}#theme-choices{border-color:#5c6773;background-color:#0f1419;}#theme-choices>button:not(:first-child){border-top-color:#5c6773;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:rgba(110,110,110,0.33);}@media (max-width:700px){#theme-picker{background:#0f1419;}}#all-types{background-color:#14191f;}#all-types:hover{background-color:rgba(70,70,70,0.33);}.search-results .result-name span.alias{color:#c5c5c5;}.search-results .result-name span.grey{color:#999;}#sidebar-toggle{background-color:#14191f;}#sidebar-toggle:hover{background-color:rgba(70,70,70,0.33);}#source-sidebar{background-color:#14191f;}#source-sidebar>.title{color:#fff;border-bottom-color:#5c6773;}div.files>a:hover,div.name:hover{background-color:#14191f;color:#ffb44c;}div.files>.selected{background-color:#14191f;color:#ffb44c;}.setting-line>.title{border-bottom-color:#5c6773;}input:checked+.slider{background-color:#ffb454 !important;}.scraped-example .example-wrap .rust span.highlight{background:rgb(91,59,1);}.scraped-example .example-wrap .rust span.highlight.focus{background:rgb(124,75,15);}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(15,20,25,1),rgba(15,20,25,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(15,20,25,1),rgba(15,20,25,0));}.toggle-line-inner{background:#616161;}.toggle-line:hover .toggle-line-inner{background:##898989;} \ No newline at end of file diff --git a/public/main/brush.svg b/public/main/brush.svg deleted file mode 100644 index ea266e85..00000000 --- a/public/main/brush.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/main/clipboard.svg b/public/main/clipboard.svg deleted file mode 100644 index 8adbd996..00000000 --- a/public/main/clipboard.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/public/main/crates.js b/public/main/crates.js deleted file mode 100644 index 58e198fb..00000000 --- a/public/main/crates.js +++ /dev/null @@ -1 +0,0 @@ -window.ALL_CRATES = ["os"]; \ No newline at end of file diff --git a/public/main/dark.css b/public/main/dark.css deleted file mode 100644 index 5b8e0f75..00000000 --- a/public/main/dark.css +++ /dev/null @@ -1 +0,0 @@ -body{background-color:#353535;color:#ddd;}h1,h2,h3,h4{color:#ddd;}h1.fqn{border-bottom-color:#d2d2d2;}h2,h3,h4{border-bottom-color:#d2d2d2;}.in-band{background-color:#353535;}.invisible{background:rgba(0,0,0,0);}.docblock code,.docblock-short code{background-color:#2A2A2A;}pre,.rustdoc.source .example-wrap{background-color:#2A2A2A;}.sidebar{background-color:#505050;}.rust-logo{filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff)}*{scrollbar-color:rgb(64,65,67) #717171;}.sidebar{scrollbar-color:rgba(32,34,37,.6) #5a5a5a;}::-webkit-scrollbar-track{background-color:#717171;}::-webkit-scrollbar-thumb{background-color:rgba(32,34,37,.6);}.sidebar::-webkit-scrollbar-track{background-color:#717171;}.sidebar::-webkit-scrollbar-thumb{background-color:rgba(32,34,37,.6);}.sidebar .current{background-color:#333;}.source .sidebar{background-color:#565656;}.sidebar .location{border-color:#fff;background:#575757;color:#DDD;}.sidebar .version{border-bottom-color:#DDD;}.sidebar-title{border-top-color:#777;border-bottom-color:#777;}.block a:hover{background:#444;}.line-numbers span{color:#3B91E2;}.line-numbers .line-highlighted{background-color:#0a042f !important;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom-color:#DDD;}.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#ddd;}.search-results a:hover{background-color:#777;}.search-results a:focus{color:#eee !important;background-color:#616161;}.search-results a:focus span{color:#eee !important;}a.result-trait:focus{background-color:#013191;}a.result-traitalias:focus{background-color:#013191;}a.result-mod:focus,a.result-externcrate:focus{background-color:#884719;}a.result-enum:focus{background-color:#194e9f;}a.result-struct:focus{background-color:#194e9f;}a.result-union:focus{background-color:#194e9f;}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{background-color:#4950ed;}a.result-type:focus{background-color:#194e9f;}a.result-associatedtype:focus{background-color:#884719;}a.result-foreigntype:focus{background-color:#194e9f;}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{background-color:#217d1c;}a.result-constant:focus,a.result-static:focus{background-color:#884719;}a.result-primitive:focus{background-color:#194e9f;}a.result-keyword:focus{background-color:#884719;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#2dbfb8;}.content span.struct,.content a.struct,.block a.current.struct{color:#2dbfb8;}.content span.type,.content a.type,.block a.current.type{color:#2dbfb8;}.content span.associatedtype,.content a.associatedtype,.block a.current.associatedtype{color:#D2991D;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#2dbfb8;}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{color:#09bd00;}.content span.union,.content a.union,.block a.current.union{color:#2dbfb8;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#D2991D;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#2dbfb8;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#D2991D;}.content span.trait,.content a.trait,.block a.current.trait{color:#b78cf2;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#b78cf2;}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{color:#2BAB63;}.content span.keyword,.content a.keyword,.block a.current.keyword{color:#D2991D;}pre.rust .comment{color:#8d8d8b;}pre.rust .doccomment{color:#8ca375;}nav:not(.sidebar){border-bottom-color:#4e4e4e;}nav.main .current{border-top-color:#eee;border-bottom-color:#eee;}nav.main .separator{border-color:#eee;}a{color:#D2991D;}a#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,pre.rust a,.sidebar a,.in-band a{color:#ddd;}.search-results a{color:#ddd;}a.test-arrow{color:#dedede;}body.source .example-wrap pre.rust a{background:#333;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}details.rustdoc-toggle>summary::before,details.undocumented>summary::before{filter:invert(100%);}#crate-search{color:#111;background-color:#f0f0f0;border-color:#000;box-shadow:0 0 0 1px #000,0 0 0 2px transparent;}.search-input{color:#111;background-color:#f0f0f0;box-shadow:0 0 0 1px #000,0 0 0 2px transparent;}.search-input:focus{border-color:#008dfd;}#crate-search+.search-input:focus{box-shadow:0 0 8px 4px #078dd8;}.module-item .stab,.import-item .stab{color:#ddd;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;color:#2f2f2f;}.stab.deprecated{background:#ffc4c4;border-color:#db7b7b;color:#2f2f2f;}.stab.portability{background:#F3DFFF;border-color:#b07bdb;color:#2f2f2f;}.stab.portability>code{background:none;}#help>div{background:#4d4d4d;border-color:#bfbfbf;}#help span.bottom,#help span.top{border-color:#bfbfbf;}#help dt{border-color:#bfbfbf;background:rgba(0,0,0,0);}.rightside,.out-of-band{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:#ddd;}.line-numbers :target{background-color:transparent;}pre.rust .kw{color:#ab8ac1;}pre.rust .kw-2,pre.rust .prelude-ty{color:#769acb;}pre.rust .number,pre.rust .string{color:#83a300;}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{color:#ee6868;}pre.rust .macro,pre.rust .macro-nonterminal{color:#3E999F;}pre.rust .lifetime{color:#d97f26;}pre.rust .question-mark{color:#ff9011;}.example-wrap>pre.line-number{border-color:#4a4949;}a.test-arrow{background-color:rgba(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}.toggle-label,.code-attribute{color:#999;}:target{background-color:#494a3d;border-right:3px solid #bb7410;}pre.compile_fail{border-left:2px solid rgba(255,0,0,.8);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.8);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.8);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.8);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#0089ff;}.tooltip::after{background-color:#000;color:#fff;border-color:#000;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#111;border-color:#777;}.notable-traits-tooltiptext .notable{border-bottom-color:#d2d2d2;}#titles>button:not(.selected){background-color:#252525;border-top-color:#252525;}#titles>button:hover,#titles>button.selected{border-top-color:#0089ff;background-color:#353535;}#titles>button>div.count{color:#888;}@media (max-width:700px){.sidebar-menu{background-color:#505050;border-bottom-color:#e0e0e0;border-right-color:#e0e0e0;}.sidebar-elems{background-color:#505050;border-right-color:#000;}#sidebar-filler{background-color:#505050;border-bottom-color:#e0e0e0;}}kbd{color:#000;background-color:#fafbfc;border-color:#d1d5da;border-bottom-color:#c6cbd1;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#e0e0e0;background:#f0f0f0;color:#000;}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#ffb900;}#copy-path{color:#999;}#copy-path>img{filter:invert(50%);}#copy-path:hover>img{filter:invert(65%);}#theme-choices{border-color:#e0e0e0;background-color:#353535;}#theme-choices>button:not(:first-child){border-top-color:#e0e0e0;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:#4e4e4e;}@media (max-width:700px){#theme-picker{background:#f0f0f0;}}#all-types{background-color:#505050;}#all-types:hover{background-color:#606060;}.search-results .result-name span.alias{color:#fff;}.search-results .result-name span.grey{color:#ccc;}#sidebar-toggle{background-color:#565656;}#sidebar-toggle:hover{background-color:#676767;}#source-sidebar{background-color:#565656;}#source-sidebar>.title{border-bottom-color:#ccc;}div.files>a:hover,div.name:hover{background-color:#444;}div.files>.selected{background-color:#333;}.setting-line>.title{border-bottom-color:#ddd;}.scraped-example .example-wrap .rust span.highlight{background:rgb(91,59,1);}.scraped-example .example-wrap .rust span.highlight.focus{background:rgb(124,75,15);}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(53,53,53,1),rgba(53,53,53,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(53,53,53,1),rgba(53,53,53,0));}.toggle-line-inner{background:#616161;}.toggle-line:hover .toggle-line-inner{background:##898989;} \ No newline at end of file diff --git a/public/main/down-arrow.svg b/public/main/down-arrow.svg deleted file mode 100644 index 35437e77..00000000 --- a/public/main/down-arrow.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/main/favicon-16x16.png b/public/main/favicon-16x16.png deleted file mode 100644 index ea4b45ca..00000000 Binary files a/public/main/favicon-16x16.png and /dev/null differ diff --git a/public/main/favicon-32x32.png b/public/main/favicon-32x32.png deleted file mode 100644 index 69b8613c..00000000 Binary files a/public/main/favicon-32x32.png and /dev/null differ diff --git a/public/main/favicon.svg b/public/main/favicon.svg deleted file mode 100644 index 8b34b511..00000000 --- a/public/main/favicon.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/public/main/implementors/core/clone/trait.Clone.js b/public/main/implementors/core/clone/trait.Clone.js deleted file mode 100644 index 9d80fd00..00000000 --- a/public/main/implementors/core/clone/trait.Clone.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl Clone for CMD","synthetic":false,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl Clone for InitError","synthetic":false,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl Clone for SDCardCSD","synthetic":false,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl Clone for SDCardCID","synthetic":false,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl Clone for SDCardInfo","synthetic":false,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl Clone for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Clone for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Clone for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Clone for IntrTargetPriority","synthetic":false,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl Clone for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Clone for RingBufferStatus","synthetic":false,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl Clone for PhysAddr","synthetic":false,"types":["os::mm::address::PhysAddr"]},{"text":"impl Clone for VirtAddr","synthetic":false,"types":["os::mm::address::VirtAddr"]},{"text":"impl Clone for PhysPageNum","synthetic":false,"types":["os::mm::address::PhysPageNum"]},{"text":"impl Clone for VirtPageNum","synthetic":false,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T: Clone> Clone for SimpleRange<T> where
    T: StepByOne + Copy + PartialEq + PartialOrd + Debug
","synthetic":false,"types":["os::mm::address::SimpleRange"]},{"text":"impl Clone for MapType","synthetic":false,"types":["os::mm::memory_set::MapType"]},{"text":"impl Clone for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Clone for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Clone for PageTableEntry","synthetic":false,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl Clone for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]},{"text":"impl Clone for TaskStatus","synthetic":false,"types":["os::task::task::TaskStatus"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/cmp/trait.Eq.js b/public/main/implementors/core/cmp/trait.Eq.js deleted file mode 100644 index 93c3024b..00000000 --- a/public/main/implementors/core/cmp/trait.Eq.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl Eq for CMD","synthetic":false,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl Eq for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Eq for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Eq for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Eq for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Eq for PhysAddr","synthetic":false,"types":["os::mm::address::PhysAddr"]},{"text":"impl Eq for VirtAddr","synthetic":false,"types":["os::mm::address::VirtAddr"]},{"text":"impl Eq for PhysPageNum","synthetic":false,"types":["os::mm::address::PhysPageNum"]},{"text":"impl Eq for VirtPageNum","synthetic":false,"types":["os::mm::address::VirtPageNum"]},{"text":"impl Eq for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Eq for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Eq for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]},{"text":"impl Eq for TimerCondVar","synthetic":false,"types":["os::timer::TimerCondVar"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/cmp/trait.Ord.js b/public/main/implementors/core/cmp/trait.Ord.js deleted file mode 100644 index 5598db00..00000000 --- a/public/main/implementors/core/cmp/trait.Ord.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl Ord for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Ord for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Ord for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Ord for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Ord for PhysAddr","synthetic":false,"types":["os::mm::address::PhysAddr"]},{"text":"impl Ord for VirtAddr","synthetic":false,"types":["os::mm::address::VirtAddr"]},{"text":"impl Ord for PhysPageNum","synthetic":false,"types":["os::mm::address::PhysPageNum"]},{"text":"impl Ord for VirtPageNum","synthetic":false,"types":["os::mm::address::VirtPageNum"]},{"text":"impl Ord for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Ord for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Ord for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]},{"text":"impl Ord for TimerCondVar","synthetic":false,"types":["os::timer::TimerCondVar"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/cmp/trait.PartialEq.js b/public/main/implementors/core/cmp/trait.PartialEq.js deleted file mode 100644 index c9cd0ccb..00000000 --- a/public/main/implementors/core/cmp/trait.PartialEq.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl PartialEq<CMD> for CMD","synthetic":false,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl PartialEq<IER> for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl PartialEq<LSR> for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl PartialEq<MCR> for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl PartialEq<OpenFlags> for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl PartialEq<RingBufferStatus> for RingBufferStatus","synthetic":false,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl PartialEq<PhysAddr> for PhysAddr","synthetic":false,"types":["os::mm::address::PhysAddr"]},{"text":"impl PartialEq<VirtAddr> for VirtAddr","synthetic":false,"types":["os::mm::address::VirtAddr"]},{"text":"impl PartialEq<PhysPageNum> for PhysPageNum","synthetic":false,"types":["os::mm::address::PhysPageNum"]},{"text":"impl PartialEq<VirtPageNum> for VirtPageNum","synthetic":false,"types":["os::mm::address::VirtPageNum"]},{"text":"impl PartialEq<MapType> for MapType","synthetic":false,"types":["os::mm::memory_set::MapType"]},{"text":"impl PartialEq<MapPermission> for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl PartialEq<PTEFlags> for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl PartialEq<SignalFlags> for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]},{"text":"impl PartialEq<TaskStatus> for TaskStatus","synthetic":false,"types":["os::task::task::TaskStatus"]},{"text":"impl PartialEq<TimerCondVar> for TimerCondVar","synthetic":false,"types":["os::timer::TimerCondVar"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/cmp/trait.PartialOrd.js b/public/main/implementors/core/cmp/trait.PartialOrd.js deleted file mode 100644 index 57c85ba4..00000000 --- a/public/main/implementors/core/cmp/trait.PartialOrd.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl PartialOrd<IER> for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl PartialOrd<LSR> for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl PartialOrd<MCR> for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl PartialOrd<OpenFlags> for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl PartialOrd<PhysAddr> for PhysAddr","synthetic":false,"types":["os::mm::address::PhysAddr"]},{"text":"impl PartialOrd<VirtAddr> for VirtAddr","synthetic":false,"types":["os::mm::address::VirtAddr"]},{"text":"impl PartialOrd<PhysPageNum> for PhysPageNum","synthetic":false,"types":["os::mm::address::PhysPageNum"]},{"text":"impl PartialOrd<VirtPageNum> for VirtPageNum","synthetic":false,"types":["os::mm::address::VirtPageNum"]},{"text":"impl PartialOrd<MapPermission> for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl PartialOrd<PTEFlags> for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl PartialOrd<SignalFlags> for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]},{"text":"impl PartialOrd<TimerCondVar> for TimerCondVar","synthetic":false,"types":["os::timer::TimerCondVar"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/convert/trait.From.js b/public/main/implementors/core/convert/trait.From.js deleted file mode 100644 index d2fbb8c0..00000000 --- a/public/main/implementors/core/convert/trait.From.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl From<usize> for PhysAddr","synthetic":false,"types":["os::mm::address::PhysAddr"]},{"text":"impl From<usize> for PhysPageNum","synthetic":false,"types":["os::mm::address::PhysPageNum"]},{"text":"impl From<usize> for VirtAddr","synthetic":false,"types":["os::mm::address::VirtAddr"]},{"text":"impl From<usize> for VirtPageNum","synthetic":false,"types":["os::mm::address::VirtPageNum"]},{"text":"impl From<PhysAddr> for usize","synthetic":false,"types":[]},{"text":"impl From<PhysPageNum> for usize","synthetic":false,"types":[]},{"text":"impl From<VirtAddr> for usize","synthetic":false,"types":[]},{"text":"impl From<VirtPageNum> for usize","synthetic":false,"types":[]},{"text":"impl From<VirtAddr> for VirtPageNum","synthetic":false,"types":["os::mm::address::VirtPageNum"]},{"text":"impl From<VirtPageNum> for VirtAddr","synthetic":false,"types":["os::mm::address::VirtAddr"]},{"text":"impl From<PhysAddr> for PhysPageNum","synthetic":false,"types":["os::mm::address::PhysPageNum"]},{"text":"impl From<PhysPageNum> for PhysAddr","synthetic":false,"types":["os::mm::address::PhysAddr"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/fmt/trait.Binary.js b/public/main/implementors/core/fmt/trait.Binary.js deleted file mode 100644 index 9bc9019c..00000000 --- a/public/main/implementors/core/fmt/trait.Binary.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl Binary for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Binary for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Binary for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Binary for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Binary for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Binary for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Binary for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/fmt/trait.Debug.js b/public/main/implementors/core/fmt/trait.Debug.js deleted file mode 100644 index 831d7356..00000000 --- a/public/main/implementors/core/fmt/trait.Debug.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl Debug for CMD","synthetic":false,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl Debug for InitError","synthetic":false,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl Debug for SDCardCSD","synthetic":false,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl Debug for SDCardCID","synthetic":false,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl Debug for SDCardInfo","synthetic":false,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl Debug for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Debug for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Debug for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Debug for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Debug for VirtAddr","synthetic":false,"types":["os::mm::address::VirtAddr"]},{"text":"impl Debug for VirtPageNum","synthetic":false,"types":["os::mm::address::VirtPageNum"]},{"text":"impl Debug for PhysAddr","synthetic":false,"types":["os::mm::address::PhysAddr"]},{"text":"impl Debug for PhysPageNum","synthetic":false,"types":["os::mm::address::PhysPageNum"]},{"text":"impl Debug for FrameTracker","synthetic":false,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl Debug for MapType","synthetic":false,"types":["os::mm::memory_set::MapType"]},{"text":"impl Debug for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Debug for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Debug for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]},{"text":"impl Debug for TrapContext","synthetic":false,"types":["os::trap::context::TrapContext"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/fmt/trait.LowerHex.js b/public/main/implementors/core/fmt/trait.LowerHex.js deleted file mode 100644 index dea4c392..00000000 --- a/public/main/implementors/core/fmt/trait.LowerHex.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl LowerHex for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl LowerHex for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl LowerHex for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl LowerHex for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl LowerHex for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl LowerHex for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl LowerHex for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/fmt/trait.Octal.js b/public/main/implementors/core/fmt/trait.Octal.js deleted file mode 100644 index 7eb3d070..00000000 --- a/public/main/implementors/core/fmt/trait.Octal.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl Octal for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Octal for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Octal for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Octal for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Octal for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Octal for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Octal for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/fmt/trait.UpperHex.js b/public/main/implementors/core/fmt/trait.UpperHex.js deleted file mode 100644 index 24ca25cc..00000000 --- a/public/main/implementors/core/fmt/trait.UpperHex.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl UpperHex for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl UpperHex for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl UpperHex for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl UpperHex for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl UpperHex for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl UpperHex for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl UpperHex for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/fmt/trait.Write.js b/public/main/implementors/core/fmt/trait.Write.js deleted file mode 100644 index 0d40b97a..00000000 --- a/public/main/implementors/core/fmt/trait.Write.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl Write for Stdout","synthetic":false,"types":["os::console::Stdout"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/hash/trait.Hash.js b/public/main/implementors/core/hash/trait.Hash.js deleted file mode 100644 index 416f505d..00000000 --- a/public/main/implementors/core/hash/trait.Hash.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl Hash for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Hash for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Hash for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Hash for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Hash for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Hash for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Hash for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/iter/traits/collect/trait.Extend.js b/public/main/implementors/core/iter/traits/collect/trait.Extend.js deleted file mode 100644 index 2f283f04..00000000 --- a/public/main/implementors/core/iter/traits/collect/trait.Extend.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl Extend<IER> for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Extend<LSR> for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Extend<MCR> for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Extend<OpenFlags> for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Extend<MapPermission> for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Extend<PTEFlags> for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Extend<SignalFlags> for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/iter/traits/collect/trait.FromIterator.js b/public/main/implementors/core/iter/traits/collect/trait.FromIterator.js deleted file mode 100644 index bd004f10..00000000 --- a/public/main/implementors/core/iter/traits/collect/trait.FromIterator.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl FromIterator<IER> for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl FromIterator<LSR> for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl FromIterator<MCR> for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl FromIterator<OpenFlags> for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl FromIterator<MapPermission> for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl FromIterator<PTEFlags> for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl FromIterator<SignalFlags> for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/iter/traits/collect/trait.IntoIterator.js b/public/main/implementors/core/iter/traits/collect/trait.IntoIterator.js deleted file mode 100644 index 7a056c59..00000000 --- a/public/main/implementors/core/iter/traits/collect/trait.IntoIterator.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl<T> IntoIterator for SimpleRange<T> where
    T: StepByOne + Copy + PartialEq + PartialOrd + Debug
","synthetic":false,"types":["os::mm::address::SimpleRange"]},{"text":"impl IntoIterator for UserBuffer","synthetic":false,"types":["os::mm::page_table::UserBuffer"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/iter/traits/iterator/trait.Iterator.js b/public/main/implementors/core/iter/traits/iterator/trait.Iterator.js deleted file mode 100644 index ede026ae..00000000 --- a/public/main/implementors/core/iter/traits/iterator/trait.Iterator.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl<T> Iterator for SimpleRangeIterator<T> where
    T: StepByOne + Copy + PartialEq + PartialOrd + Debug
","synthetic":false,"types":["os::mm::address::SimpleRangeIterator"]},{"text":"impl Iterator for UserBufferIterator","synthetic":false,"types":["os::mm::page_table::UserBufferIterator"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/marker/trait.Copy.js b/public/main/implementors/core/marker/trait.Copy.js deleted file mode 100644 index 1149d3b0..00000000 --- a/public/main/implementors/core/marker/trait.Copy.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl Copy for CMD","synthetic":false,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl Copy for InitError","synthetic":false,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl Copy for SDCardCSD","synthetic":false,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl Copy for SDCardCID","synthetic":false,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl Copy for SDCardInfo","synthetic":false,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl Copy for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Copy for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Copy for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Copy for IntrTargetPriority","synthetic":false,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl Copy for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Copy for RingBufferStatus","synthetic":false,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl Copy for PhysAddr","synthetic":false,"types":["os::mm::address::PhysAddr"]},{"text":"impl Copy for VirtAddr","synthetic":false,"types":["os::mm::address::VirtAddr"]},{"text":"impl Copy for PhysPageNum","synthetic":false,"types":["os::mm::address::PhysPageNum"]},{"text":"impl Copy for VirtPageNum","synthetic":false,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T: Copy> Copy for SimpleRange<T> where
    T: StepByOne + Copy + PartialEq + PartialOrd + Debug
","synthetic":false,"types":["os::mm::address::SimpleRange"]},{"text":"impl Copy for MapType","synthetic":false,"types":["os::mm::memory_set::MapType"]},{"text":"impl Copy for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Copy for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Copy for PageTableEntry","synthetic":false,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl Copy for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]},{"text":"impl Copy for TaskStatus","synthetic":false,"types":["os::task::task::TaskStatus"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/marker/trait.Freeze.js b/public/main/implementors/core/marker/trait.Freeze.js deleted file mode 100644 index 57113701..00000000 --- a/public/main/implementors/core/marker/trait.Freeze.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl Freeze for Stdout","synthetic":true,"types":["os::console::Stdout"]},{"text":"impl<SPI> Freeze for SDCard<SPI> where
    SPI: Freeze
","synthetic":true,"types":["os::drivers::block::sdcard::SDCard"]},{"text":"impl Freeze for CMD","synthetic":true,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl Freeze for InitError","synthetic":true,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl Freeze for SDCardCSD","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl Freeze for SDCardCID","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl Freeze for SDCardInfo","synthetic":true,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl Freeze for PERIPHERALS","synthetic":true,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl !Freeze for SDCardWrapper","synthetic":true,"types":["os::drivers::block::sdcard::SDCardWrapper"]},{"text":"impl !Freeze for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Freeze for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl Freeze for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Freeze for IER","synthetic":true,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Freeze for LSR","synthetic":true,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Freeze for MCR","synthetic":true,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Freeze for ReadWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]},{"text":"impl Freeze for WriteWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]},{"text":"impl Freeze for NS16550aRaw","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aRaw"]},{"text":"impl Freeze for NS16550aInner","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aInner"]},{"text":"impl<const BASE_ADDR: usize> !Freeze for NS16550a<BASE_ADDR>","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550a"]},{"text":"impl Freeze for UART","synthetic":true,"types":["os::drivers::chardev::UART"]},{"text":"impl Freeze for PLIC","synthetic":true,"types":["os::drivers::plic::PLIC"]},{"text":"impl Freeze for IntrTargetPriority","synthetic":true,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl !Freeze for OSInode","synthetic":true,"types":["os::fs::inode::OSInode"]},{"text":"impl Freeze for OSInodeInner","synthetic":true,"types":["os::fs::inode::OSInodeInner"]},{"text":"impl Freeze for ROOT_INODE","synthetic":true,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl Freeze for OpenFlags","synthetic":true,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Freeze for Pipe","synthetic":true,"types":["os::fs::pipe::Pipe"]},{"text":"impl Freeze for RingBufferStatus","synthetic":true,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl Freeze for PipeRingBuffer","synthetic":true,"types":["os::fs::pipe::PipeRingBuffer"]},{"text":"impl Freeze for Stdin","synthetic":true,"types":["os::fs::stdio::Stdin"]},{"text":"impl Freeze for Stdout","synthetic":true,"types":["os::fs::stdio::Stdout"]},{"text":"impl Freeze for PhysAddr","synthetic":true,"types":["os::mm::address::PhysAddr"]},{"text":"impl Freeze for VirtAddr","synthetic":true,"types":["os::mm::address::VirtAddr"]},{"text":"impl Freeze for PhysPageNum","synthetic":true,"types":["os::mm::address::PhysPageNum"]},{"text":"impl Freeze for VirtPageNum","synthetic":true,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T> Freeze for SimpleRange<T> where
    T: Freeze
","synthetic":true,"types":["os::mm::address::SimpleRange"]},{"text":"impl<T> Freeze for SimpleRangeIterator<T> where
    T: Freeze
","synthetic":true,"types":["os::mm::address::SimpleRangeIterator"]},{"text":"impl Freeze for FrameTracker","synthetic":true,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl Freeze for StackFrameAllocator","synthetic":true,"types":["os::mm::frame_allocator::StackFrameAllocator"]},{"text":"impl Freeze for FRAME_ALLOCATOR","synthetic":true,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl Freeze for KERNEL_SPACE","synthetic":true,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl Freeze for MemorySet","synthetic":true,"types":["os::mm::memory_set::MemorySet"]},{"text":"impl Freeze for MapArea","synthetic":true,"types":["os::mm::memory_set::MapArea"]},{"text":"impl Freeze for MapType","synthetic":true,"types":["os::mm::memory_set::MapType"]},{"text":"impl Freeze for MapPermission","synthetic":true,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Freeze for PTEFlags","synthetic":true,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Freeze for PageTableEntry","synthetic":true,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl Freeze for PageTable","synthetic":true,"types":["os::mm::page_table::PageTable"]},{"text":"impl Freeze for UserBuffer","synthetic":true,"types":["os::mm::page_table::UserBuffer"]},{"text":"impl Freeze for UserBufferIterator","synthetic":true,"types":["os::mm::page_table::UserBufferIterator"]},{"text":"impl !Freeze for Condvar","synthetic":true,"types":["os::sync::condvar::Condvar"]},{"text":"impl Freeze for CondvarInner","synthetic":true,"types":["os::sync::condvar::CondvarInner"]},{"text":"impl !Freeze for MutexSpin","synthetic":true,"types":["os::sync::mutex::MutexSpin"]},{"text":"impl !Freeze for MutexBlocking","synthetic":true,"types":["os::sync::mutex::MutexBlocking"]},{"text":"impl Freeze for MutexBlockingInner","synthetic":true,"types":["os::sync::mutex::MutexBlockingInner"]},{"text":"impl !Freeze for Semaphore","synthetic":true,"types":["os::sync::semaphore::Semaphore"]},{"text":"impl Freeze for SemaphoreInner","synthetic":true,"types":["os::sync::semaphore::SemaphoreInner"]},{"text":"impl<T> !Freeze for UPSafeCellRaw<T>","synthetic":true,"types":["os::sync::up::UPSafeCellRaw"]},{"text":"impl Freeze for IntrMaskingInfo","synthetic":true,"types":["os::sync::up::IntrMaskingInfo"]},{"text":"impl Freeze for INTR_MASKING_INFO","synthetic":true,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<T> !Freeze for UPIntrFreeCell<T>","synthetic":true,"types":["os::sync::up::UPIntrFreeCell"]},{"text":"impl<'a, T> Freeze for UPIntrRefMut<'a, T>","synthetic":true,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl Freeze for TaskContext","synthetic":true,"types":["os::task::context::TaskContext"]},{"text":"impl Freeze for RecycleAllocator","synthetic":true,"types":["os::task::id::RecycleAllocator"]},{"text":"impl Freeze for PID_ALLOCATOR","synthetic":true,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl Freeze for KSTACK_ALLOCATOR","synthetic":true,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl Freeze for PidHandle","synthetic":true,"types":["os::task::id::PidHandle"]},{"text":"impl Freeze for KernelStack","synthetic":true,"types":["os::task::id::KernelStack"]},{"text":"impl Freeze for TaskUserRes","synthetic":true,"types":["os::task::id::TaskUserRes"]},{"text":"impl Freeze for TaskManager","synthetic":true,"types":["os::task::manager::TaskManager"]},{"text":"impl Freeze for TASK_MANAGER","synthetic":true,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl Freeze for PID2PCB","synthetic":true,"types":["os::task::manager::PID2PCB"]},{"text":"impl !Freeze for ProcessControlBlock","synthetic":true,"types":["os::task::process::ProcessControlBlock"]},{"text":"impl Freeze for ProcessControlBlockInner","synthetic":true,"types":["os::task::process::ProcessControlBlockInner"]},{"text":"impl Freeze for Processor","synthetic":true,"types":["os::task::processor::Processor"]},{"text":"impl Freeze for PROCESSOR","synthetic":true,"types":["os::task::processor::PROCESSOR"]},{"text":"impl Freeze for SignalFlags","synthetic":true,"types":["os::task::signal::SignalFlags"]},{"text":"impl !Freeze for TaskControlBlock","synthetic":true,"types":["os::task::task::TaskControlBlock"]},{"text":"impl Freeze for TaskControlBlockInner","synthetic":true,"types":["os::task::task::TaskControlBlockInner"]},{"text":"impl Freeze for TaskStatus","synthetic":true,"types":["os::task::task::TaskStatus"]},{"text":"impl Freeze for INITPROC","synthetic":true,"types":["os::task::INITPROC"]},{"text":"impl Freeze for TimerCondVar","synthetic":true,"types":["os::timer::TimerCondVar"]},{"text":"impl Freeze for TIMERS","synthetic":true,"types":["os::timer::TIMERS"]},{"text":"impl Freeze for TrapContext","synthetic":true,"types":["os::trap::context::TrapContext"]},{"text":"impl Freeze for DEV_NON_BLOCKING_ACCESS","synthetic":true,"types":["os::DEV_NON_BLOCKING_ACCESS"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/marker/trait.Send.js b/public/main/implementors/core/marker/trait.Send.js deleted file mode 100644 index 4b0cdb8f..00000000 --- a/public/main/implementors/core/marker/trait.Send.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl Send for Stdout","synthetic":true,"types":["os::console::Stdout"]},{"text":"impl<SPI> Send for SDCard<SPI> where
    SPI: Send
","synthetic":true,"types":["os::drivers::block::sdcard::SDCard"]},{"text":"impl Send for CMD","synthetic":true,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl Send for InitError","synthetic":true,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl Send for SDCardCSD","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl Send for SDCardCID","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl Send for SDCardInfo","synthetic":true,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl Send for PERIPHERALS","synthetic":true,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl Send for SDCardWrapper","synthetic":true,"types":["os::drivers::block::sdcard::SDCardWrapper"]},{"text":"impl Send for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Send for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl Send for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Send for IER","synthetic":true,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Send for LSR","synthetic":true,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Send for MCR","synthetic":true,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Send for ReadWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]},{"text":"impl Send for WriteWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]},{"text":"impl Send for NS16550aRaw","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aRaw"]},{"text":"impl Send for NS16550aInner","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aInner"]},{"text":"impl<const BASE_ADDR: usize> Send for NS16550a<BASE_ADDR>","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550a"]},{"text":"impl Send for UART","synthetic":true,"types":["os::drivers::chardev::UART"]},{"text":"impl Send for PLIC","synthetic":true,"types":["os::drivers::plic::PLIC"]},{"text":"impl Send for IntrTargetPriority","synthetic":true,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl Send for OSInode","synthetic":true,"types":["os::fs::inode::OSInode"]},{"text":"impl Send for OSInodeInner","synthetic":true,"types":["os::fs::inode::OSInodeInner"]},{"text":"impl Send for ROOT_INODE","synthetic":true,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl Send for OpenFlags","synthetic":true,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Send for Pipe","synthetic":true,"types":["os::fs::pipe::Pipe"]},{"text":"impl Send for RingBufferStatus","synthetic":true,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl Send for PipeRingBuffer","synthetic":true,"types":["os::fs::pipe::PipeRingBuffer"]},{"text":"impl Send for Stdin","synthetic":true,"types":["os::fs::stdio::Stdin"]},{"text":"impl Send for Stdout","synthetic":true,"types":["os::fs::stdio::Stdout"]},{"text":"impl Send for PhysAddr","synthetic":true,"types":["os::mm::address::PhysAddr"]},{"text":"impl Send for VirtAddr","synthetic":true,"types":["os::mm::address::VirtAddr"]},{"text":"impl Send for PhysPageNum","synthetic":true,"types":["os::mm::address::PhysPageNum"]},{"text":"impl Send for VirtPageNum","synthetic":true,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T> Send for SimpleRange<T> where
    T: Send
","synthetic":true,"types":["os::mm::address::SimpleRange"]},{"text":"impl<T> Send for SimpleRangeIterator<T> where
    T: Send
","synthetic":true,"types":["os::mm::address::SimpleRangeIterator"]},{"text":"impl Send for FrameTracker","synthetic":true,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl Send for StackFrameAllocator","synthetic":true,"types":["os::mm::frame_allocator::StackFrameAllocator"]},{"text":"impl Send for FRAME_ALLOCATOR","synthetic":true,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl Send for KERNEL_SPACE","synthetic":true,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl Send for MemorySet","synthetic":true,"types":["os::mm::memory_set::MemorySet"]},{"text":"impl Send for MapArea","synthetic":true,"types":["os::mm::memory_set::MapArea"]},{"text":"impl Send for MapType","synthetic":true,"types":["os::mm::memory_set::MapType"]},{"text":"impl Send for MapPermission","synthetic":true,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Send for PTEFlags","synthetic":true,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Send for PageTableEntry","synthetic":true,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl Send for PageTable","synthetic":true,"types":["os::mm::page_table::PageTable"]},{"text":"impl Send for UserBuffer","synthetic":true,"types":["os::mm::page_table::UserBuffer"]},{"text":"impl Send for UserBufferIterator","synthetic":true,"types":["os::mm::page_table::UserBufferIterator"]},{"text":"impl Send for Condvar","synthetic":true,"types":["os::sync::condvar::Condvar"]},{"text":"impl Send for CondvarInner","synthetic":true,"types":["os::sync::condvar::CondvarInner"]},{"text":"impl Send for MutexSpin","synthetic":true,"types":["os::sync::mutex::MutexSpin"]},{"text":"impl Send for MutexBlocking","synthetic":true,"types":["os::sync::mutex::MutexBlocking"]},{"text":"impl Send for MutexBlockingInner","synthetic":true,"types":["os::sync::mutex::MutexBlockingInner"]},{"text":"impl Send for Semaphore","synthetic":true,"types":["os::sync::semaphore::Semaphore"]},{"text":"impl Send for SemaphoreInner","synthetic":true,"types":["os::sync::semaphore::SemaphoreInner"]},{"text":"impl<T> Send for UPSafeCellRaw<T> where
    T: Send
","synthetic":true,"types":["os::sync::up::UPSafeCellRaw"]},{"text":"impl Send for IntrMaskingInfo","synthetic":true,"types":["os::sync::up::IntrMaskingInfo"]},{"text":"impl Send for INTR_MASKING_INFO","synthetic":true,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<T> Send for UPIntrFreeCell<T> where
    T: Send
","synthetic":true,"types":["os::sync::up::UPIntrFreeCell"]},{"text":"impl<'a, T> !Send for UPIntrRefMut<'a, T>","synthetic":true,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl Send for TaskContext","synthetic":true,"types":["os::task::context::TaskContext"]},{"text":"impl Send for RecycleAllocator","synthetic":true,"types":["os::task::id::RecycleAllocator"]},{"text":"impl Send for PID_ALLOCATOR","synthetic":true,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl Send for KSTACK_ALLOCATOR","synthetic":true,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl Send for PidHandle","synthetic":true,"types":["os::task::id::PidHandle"]},{"text":"impl Send for KernelStack","synthetic":true,"types":["os::task::id::KernelStack"]},{"text":"impl Send for TaskUserRes","synthetic":true,"types":["os::task::id::TaskUserRes"]},{"text":"impl Send for TaskManager","synthetic":true,"types":["os::task::manager::TaskManager"]},{"text":"impl Send for TASK_MANAGER","synthetic":true,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl Send for PID2PCB","synthetic":true,"types":["os::task::manager::PID2PCB"]},{"text":"impl Send for ProcessControlBlock","synthetic":true,"types":["os::task::process::ProcessControlBlock"]},{"text":"impl Send for ProcessControlBlockInner","synthetic":true,"types":["os::task::process::ProcessControlBlockInner"]},{"text":"impl Send for Processor","synthetic":true,"types":["os::task::processor::Processor"]},{"text":"impl Send for PROCESSOR","synthetic":true,"types":["os::task::processor::PROCESSOR"]},{"text":"impl Send for SignalFlags","synthetic":true,"types":["os::task::signal::SignalFlags"]},{"text":"impl Send for TaskControlBlock","synthetic":true,"types":["os::task::task::TaskControlBlock"]},{"text":"impl Send for TaskControlBlockInner","synthetic":true,"types":["os::task::task::TaskControlBlockInner"]},{"text":"impl Send for TaskStatus","synthetic":true,"types":["os::task::task::TaskStatus"]},{"text":"impl Send for INITPROC","synthetic":true,"types":["os::task::INITPROC"]},{"text":"impl Send for TimerCondVar","synthetic":true,"types":["os::timer::TimerCondVar"]},{"text":"impl Send for TIMERS","synthetic":true,"types":["os::timer::TIMERS"]},{"text":"impl Send for TrapContext","synthetic":true,"types":["os::trap::context::TrapContext"]},{"text":"impl Send for DEV_NON_BLOCKING_ACCESS","synthetic":true,"types":["os::DEV_NON_BLOCKING_ACCESS"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/marker/trait.StructuralEq.js b/public/main/implementors/core/marker/trait.StructuralEq.js deleted file mode 100644 index 17308a03..00000000 --- a/public/main/implementors/core/marker/trait.StructuralEq.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl StructuralEq for CMD","synthetic":false,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl StructuralEq for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl StructuralEq for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl StructuralEq for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl StructuralEq for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl StructuralEq for PhysAddr","synthetic":false,"types":["os::mm::address::PhysAddr"]},{"text":"impl StructuralEq for VirtAddr","synthetic":false,"types":["os::mm::address::VirtAddr"]},{"text":"impl StructuralEq for PhysPageNum","synthetic":false,"types":["os::mm::address::PhysPageNum"]},{"text":"impl StructuralEq for VirtPageNum","synthetic":false,"types":["os::mm::address::VirtPageNum"]},{"text":"impl StructuralEq for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl StructuralEq for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl StructuralEq for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/marker/trait.StructuralPartialEq.js b/public/main/implementors/core/marker/trait.StructuralPartialEq.js deleted file mode 100644 index 2f84044e..00000000 --- a/public/main/implementors/core/marker/trait.StructuralPartialEq.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl StructuralPartialEq for CMD","synthetic":false,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl StructuralPartialEq for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl StructuralPartialEq for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl StructuralPartialEq for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl StructuralPartialEq for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl StructuralPartialEq for RingBufferStatus","synthetic":false,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl StructuralPartialEq for PhysAddr","synthetic":false,"types":["os::mm::address::PhysAddr"]},{"text":"impl StructuralPartialEq for VirtAddr","synthetic":false,"types":["os::mm::address::VirtAddr"]},{"text":"impl StructuralPartialEq for PhysPageNum","synthetic":false,"types":["os::mm::address::PhysPageNum"]},{"text":"impl StructuralPartialEq for VirtPageNum","synthetic":false,"types":["os::mm::address::VirtPageNum"]},{"text":"impl StructuralPartialEq for MapType","synthetic":false,"types":["os::mm::memory_set::MapType"]},{"text":"impl StructuralPartialEq for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl StructuralPartialEq for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl StructuralPartialEq for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]},{"text":"impl StructuralPartialEq for TaskStatus","synthetic":false,"types":["os::task::task::TaskStatus"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/marker/trait.Sync.js b/public/main/implementors/core/marker/trait.Sync.js deleted file mode 100644 index 8d6ee23b..00000000 --- a/public/main/implementors/core/marker/trait.Sync.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl Sync for Stdout","synthetic":true,"types":["os::console::Stdout"]},{"text":"impl<SPI> Sync for SDCard<SPI> where
    SPI: Sync
","synthetic":true,"types":["os::drivers::block::sdcard::SDCard"]},{"text":"impl Sync for CMD","synthetic":true,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl Sync for InitError","synthetic":true,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl Sync for SDCardCSD","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl Sync for SDCardCID","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl Sync for SDCardInfo","synthetic":true,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl Sync for PERIPHERALS","synthetic":true,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl Sync for SDCardWrapper","synthetic":true,"types":["os::drivers::block::sdcard::SDCardWrapper"]},{"text":"impl Sync for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Sync for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl Sync for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Sync for IER","synthetic":true,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Sync for LSR","synthetic":true,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Sync for MCR","synthetic":true,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Sync for ReadWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]},{"text":"impl Sync for WriteWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]},{"text":"impl Sync for NS16550aRaw","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aRaw"]},{"text":"impl Sync for NS16550aInner","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aInner"]},{"text":"impl<const BASE_ADDR: usize> Sync for NS16550a<BASE_ADDR>","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550a"]},{"text":"impl Sync for UART","synthetic":true,"types":["os::drivers::chardev::UART"]},{"text":"impl Sync for PLIC","synthetic":true,"types":["os::drivers::plic::PLIC"]},{"text":"impl Sync for IntrTargetPriority","synthetic":true,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl Sync for OSInode","synthetic":true,"types":["os::fs::inode::OSInode"]},{"text":"impl Sync for OSInodeInner","synthetic":true,"types":["os::fs::inode::OSInodeInner"]},{"text":"impl Sync for ROOT_INODE","synthetic":true,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl Sync for OpenFlags","synthetic":true,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Sync for Pipe","synthetic":true,"types":["os::fs::pipe::Pipe"]},{"text":"impl Sync for RingBufferStatus","synthetic":true,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl Sync for PipeRingBuffer","synthetic":true,"types":["os::fs::pipe::PipeRingBuffer"]},{"text":"impl Sync for Stdin","synthetic":true,"types":["os::fs::stdio::Stdin"]},{"text":"impl Sync for Stdout","synthetic":true,"types":["os::fs::stdio::Stdout"]},{"text":"impl Sync for PhysAddr","synthetic":true,"types":["os::mm::address::PhysAddr"]},{"text":"impl Sync for VirtAddr","synthetic":true,"types":["os::mm::address::VirtAddr"]},{"text":"impl Sync for PhysPageNum","synthetic":true,"types":["os::mm::address::PhysPageNum"]},{"text":"impl Sync for VirtPageNum","synthetic":true,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T> Sync for SimpleRange<T> where
    T: Sync
","synthetic":true,"types":["os::mm::address::SimpleRange"]},{"text":"impl<T> Sync for SimpleRangeIterator<T> where
    T: Sync
","synthetic":true,"types":["os::mm::address::SimpleRangeIterator"]},{"text":"impl Sync for FrameTracker","synthetic":true,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl Sync for StackFrameAllocator","synthetic":true,"types":["os::mm::frame_allocator::StackFrameAllocator"]},{"text":"impl Sync for FRAME_ALLOCATOR","synthetic":true,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl Sync for KERNEL_SPACE","synthetic":true,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl Sync for MemorySet","synthetic":true,"types":["os::mm::memory_set::MemorySet"]},{"text":"impl Sync for MapArea","synthetic":true,"types":["os::mm::memory_set::MapArea"]},{"text":"impl Sync for MapType","synthetic":true,"types":["os::mm::memory_set::MapType"]},{"text":"impl Sync for MapPermission","synthetic":true,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Sync for PTEFlags","synthetic":true,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Sync for PageTableEntry","synthetic":true,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl Sync for PageTable","synthetic":true,"types":["os::mm::page_table::PageTable"]},{"text":"impl Sync for UserBuffer","synthetic":true,"types":["os::mm::page_table::UserBuffer"]},{"text":"impl Sync for UserBufferIterator","synthetic":true,"types":["os::mm::page_table::UserBufferIterator"]},{"text":"impl Sync for Condvar","synthetic":true,"types":["os::sync::condvar::Condvar"]},{"text":"impl Sync for CondvarInner","synthetic":true,"types":["os::sync::condvar::CondvarInner"]},{"text":"impl Sync for MutexSpin","synthetic":true,"types":["os::sync::mutex::MutexSpin"]},{"text":"impl Sync for MutexBlocking","synthetic":true,"types":["os::sync::mutex::MutexBlocking"]},{"text":"impl Sync for MutexBlockingInner","synthetic":true,"types":["os::sync::mutex::MutexBlockingInner"]},{"text":"impl Sync for Semaphore","synthetic":true,"types":["os::sync::semaphore::Semaphore"]},{"text":"impl Sync for SemaphoreInner","synthetic":true,"types":["os::sync::semaphore::SemaphoreInner"]},{"text":"impl Sync for IntrMaskingInfo","synthetic":true,"types":["os::sync::up::IntrMaskingInfo"]},{"text":"impl Sync for INTR_MASKING_INFO","synthetic":true,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<'a, T> !Sync for UPIntrRefMut<'a, T>","synthetic":true,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl Sync for TaskContext","synthetic":true,"types":["os::task::context::TaskContext"]},{"text":"impl Sync for RecycleAllocator","synthetic":true,"types":["os::task::id::RecycleAllocator"]},{"text":"impl Sync for PID_ALLOCATOR","synthetic":true,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl Sync for KSTACK_ALLOCATOR","synthetic":true,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl Sync for PidHandle","synthetic":true,"types":["os::task::id::PidHandle"]},{"text":"impl Sync for KernelStack","synthetic":true,"types":["os::task::id::KernelStack"]},{"text":"impl Sync for TaskUserRes","synthetic":true,"types":["os::task::id::TaskUserRes"]},{"text":"impl Sync for TaskManager","synthetic":true,"types":["os::task::manager::TaskManager"]},{"text":"impl Sync for TASK_MANAGER","synthetic":true,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl Sync for PID2PCB","synthetic":true,"types":["os::task::manager::PID2PCB"]},{"text":"impl Sync for ProcessControlBlock","synthetic":true,"types":["os::task::process::ProcessControlBlock"]},{"text":"impl Sync for ProcessControlBlockInner","synthetic":true,"types":["os::task::process::ProcessControlBlockInner"]},{"text":"impl Sync for Processor","synthetic":true,"types":["os::task::processor::Processor"]},{"text":"impl Sync for PROCESSOR","synthetic":true,"types":["os::task::processor::PROCESSOR"]},{"text":"impl Sync for SignalFlags","synthetic":true,"types":["os::task::signal::SignalFlags"]},{"text":"impl Sync for TaskControlBlock","synthetic":true,"types":["os::task::task::TaskControlBlock"]},{"text":"impl Sync for TaskControlBlockInner","synthetic":true,"types":["os::task::task::TaskControlBlockInner"]},{"text":"impl Sync for TaskStatus","synthetic":true,"types":["os::task::task::TaskStatus"]},{"text":"impl Sync for INITPROC","synthetic":true,"types":["os::task::INITPROC"]},{"text":"impl Sync for TimerCondVar","synthetic":true,"types":["os::timer::TimerCondVar"]},{"text":"impl Sync for TIMERS","synthetic":true,"types":["os::timer::TIMERS"]},{"text":"impl Sync for TrapContext","synthetic":true,"types":["os::trap::context::TrapContext"]},{"text":"impl Sync for DEV_NON_BLOCKING_ACCESS","synthetic":true,"types":["os::DEV_NON_BLOCKING_ACCESS"]},{"text":"impl<T> Sync for UPSafeCellRaw<T>","synthetic":false,"types":["os::sync::up::UPSafeCellRaw"]},{"text":"impl<T> Sync for UPIntrFreeCell<T>","synthetic":false,"types":["os::sync::up::UPIntrFreeCell"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/marker/trait.Unpin.js b/public/main/implementors/core/marker/trait.Unpin.js deleted file mode 100644 index 1210d2bb..00000000 --- a/public/main/implementors/core/marker/trait.Unpin.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl Unpin for Stdout","synthetic":true,"types":["os::console::Stdout"]},{"text":"impl<SPI> Unpin for SDCard<SPI> where
    SPI: Unpin
","synthetic":true,"types":["os::drivers::block::sdcard::SDCard"]},{"text":"impl Unpin for CMD","synthetic":true,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl Unpin for InitError","synthetic":true,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl Unpin for SDCardCSD","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl Unpin for SDCardCID","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl Unpin for SDCardInfo","synthetic":true,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl Unpin for PERIPHERALS","synthetic":true,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl Unpin for SDCardWrapper","synthetic":true,"types":["os::drivers::block::sdcard::SDCardWrapper"]},{"text":"impl Unpin for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl Unpin for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl Unpin for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Unpin for IER","synthetic":true,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Unpin for LSR","synthetic":true,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Unpin for MCR","synthetic":true,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Unpin for ReadWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]},{"text":"impl Unpin for WriteWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]},{"text":"impl Unpin for NS16550aRaw","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aRaw"]},{"text":"impl Unpin for NS16550aInner","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aInner"]},{"text":"impl<const BASE_ADDR: usize> Unpin for NS16550a<BASE_ADDR>","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550a"]},{"text":"impl Unpin for UART","synthetic":true,"types":["os::drivers::chardev::UART"]},{"text":"impl Unpin for PLIC","synthetic":true,"types":["os::drivers::plic::PLIC"]},{"text":"impl Unpin for IntrTargetPriority","synthetic":true,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl Unpin for OSInode","synthetic":true,"types":["os::fs::inode::OSInode"]},{"text":"impl Unpin for OSInodeInner","synthetic":true,"types":["os::fs::inode::OSInodeInner"]},{"text":"impl Unpin for ROOT_INODE","synthetic":true,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl Unpin for OpenFlags","synthetic":true,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Unpin for Pipe","synthetic":true,"types":["os::fs::pipe::Pipe"]},{"text":"impl Unpin for RingBufferStatus","synthetic":true,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl Unpin for PipeRingBuffer","synthetic":true,"types":["os::fs::pipe::PipeRingBuffer"]},{"text":"impl Unpin for Stdin","synthetic":true,"types":["os::fs::stdio::Stdin"]},{"text":"impl Unpin for Stdout","synthetic":true,"types":["os::fs::stdio::Stdout"]},{"text":"impl Unpin for PhysAddr","synthetic":true,"types":["os::mm::address::PhysAddr"]},{"text":"impl Unpin for VirtAddr","synthetic":true,"types":["os::mm::address::VirtAddr"]},{"text":"impl Unpin for PhysPageNum","synthetic":true,"types":["os::mm::address::PhysPageNum"]},{"text":"impl Unpin for VirtPageNum","synthetic":true,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T> Unpin for SimpleRange<T> where
    T: Unpin
","synthetic":true,"types":["os::mm::address::SimpleRange"]},{"text":"impl<T> Unpin for SimpleRangeIterator<T> where
    T: Unpin
","synthetic":true,"types":["os::mm::address::SimpleRangeIterator"]},{"text":"impl Unpin for FrameTracker","synthetic":true,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl Unpin for StackFrameAllocator","synthetic":true,"types":["os::mm::frame_allocator::StackFrameAllocator"]},{"text":"impl Unpin for FRAME_ALLOCATOR","synthetic":true,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl Unpin for KERNEL_SPACE","synthetic":true,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl Unpin for MemorySet","synthetic":true,"types":["os::mm::memory_set::MemorySet"]},{"text":"impl Unpin for MapArea","synthetic":true,"types":["os::mm::memory_set::MapArea"]},{"text":"impl Unpin for MapType","synthetic":true,"types":["os::mm::memory_set::MapType"]},{"text":"impl Unpin for MapPermission","synthetic":true,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Unpin for PTEFlags","synthetic":true,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Unpin for PageTableEntry","synthetic":true,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl Unpin for PageTable","synthetic":true,"types":["os::mm::page_table::PageTable"]},{"text":"impl Unpin for UserBuffer","synthetic":true,"types":["os::mm::page_table::UserBuffer"]},{"text":"impl Unpin for UserBufferIterator","synthetic":true,"types":["os::mm::page_table::UserBufferIterator"]},{"text":"impl Unpin for Condvar","synthetic":true,"types":["os::sync::condvar::Condvar"]},{"text":"impl Unpin for CondvarInner","synthetic":true,"types":["os::sync::condvar::CondvarInner"]},{"text":"impl Unpin for MutexSpin","synthetic":true,"types":["os::sync::mutex::MutexSpin"]},{"text":"impl Unpin for MutexBlocking","synthetic":true,"types":["os::sync::mutex::MutexBlocking"]},{"text":"impl Unpin for MutexBlockingInner","synthetic":true,"types":["os::sync::mutex::MutexBlockingInner"]},{"text":"impl Unpin for Semaphore","synthetic":true,"types":["os::sync::semaphore::Semaphore"]},{"text":"impl Unpin for SemaphoreInner","synthetic":true,"types":["os::sync::semaphore::SemaphoreInner"]},{"text":"impl<T> Unpin for UPSafeCellRaw<T> where
    T: Unpin
","synthetic":true,"types":["os::sync::up::UPSafeCellRaw"]},{"text":"impl Unpin for IntrMaskingInfo","synthetic":true,"types":["os::sync::up::IntrMaskingInfo"]},{"text":"impl Unpin for INTR_MASKING_INFO","synthetic":true,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<T> Unpin for UPIntrFreeCell<T> where
    T: Unpin
","synthetic":true,"types":["os::sync::up::UPIntrFreeCell"]},{"text":"impl<'a, T> Unpin for UPIntrRefMut<'a, T>","synthetic":true,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl Unpin for TaskContext","synthetic":true,"types":["os::task::context::TaskContext"]},{"text":"impl Unpin for RecycleAllocator","synthetic":true,"types":["os::task::id::RecycleAllocator"]},{"text":"impl Unpin for PID_ALLOCATOR","synthetic":true,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl Unpin for KSTACK_ALLOCATOR","synthetic":true,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl Unpin for PidHandle","synthetic":true,"types":["os::task::id::PidHandle"]},{"text":"impl Unpin for KernelStack","synthetic":true,"types":["os::task::id::KernelStack"]},{"text":"impl Unpin for TaskUserRes","synthetic":true,"types":["os::task::id::TaskUserRes"]},{"text":"impl Unpin for TaskManager","synthetic":true,"types":["os::task::manager::TaskManager"]},{"text":"impl Unpin for TASK_MANAGER","synthetic":true,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl Unpin for PID2PCB","synthetic":true,"types":["os::task::manager::PID2PCB"]},{"text":"impl Unpin for ProcessControlBlock","synthetic":true,"types":["os::task::process::ProcessControlBlock"]},{"text":"impl Unpin for ProcessControlBlockInner","synthetic":true,"types":["os::task::process::ProcessControlBlockInner"]},{"text":"impl Unpin for Processor","synthetic":true,"types":["os::task::processor::Processor"]},{"text":"impl Unpin for PROCESSOR","synthetic":true,"types":["os::task::processor::PROCESSOR"]},{"text":"impl Unpin for SignalFlags","synthetic":true,"types":["os::task::signal::SignalFlags"]},{"text":"impl Unpin for TaskControlBlock","synthetic":true,"types":["os::task::task::TaskControlBlock"]},{"text":"impl Unpin for TaskControlBlockInner","synthetic":true,"types":["os::task::task::TaskControlBlockInner"]},{"text":"impl Unpin for TaskStatus","synthetic":true,"types":["os::task::task::TaskStatus"]},{"text":"impl Unpin for INITPROC","synthetic":true,"types":["os::task::INITPROC"]},{"text":"impl Unpin for TimerCondVar","synthetic":true,"types":["os::timer::TimerCondVar"]},{"text":"impl Unpin for TIMERS","synthetic":true,"types":["os::timer::TIMERS"]},{"text":"impl Unpin for TrapContext","synthetic":true,"types":["os::trap::context::TrapContext"]},{"text":"impl Unpin for DEV_NON_BLOCKING_ACCESS","synthetic":true,"types":["os::DEV_NON_BLOCKING_ACCESS"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/ops/arith/trait.Sub.js b/public/main/implementors/core/ops/arith/trait.Sub.js deleted file mode 100644 index e31a7592..00000000 --- a/public/main/implementors/core/ops/arith/trait.Sub.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl Sub<IER> for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Sub<LSR> for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Sub<MCR> for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Sub<OpenFlags> for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Sub<MapPermission> for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Sub<PTEFlags> for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Sub<SignalFlags> for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/ops/arith/trait.SubAssign.js b/public/main/implementors/core/ops/arith/trait.SubAssign.js deleted file mode 100644 index c60075bc..00000000 --- a/public/main/implementors/core/ops/arith/trait.SubAssign.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl SubAssign<IER> for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl SubAssign<LSR> for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl SubAssign<MCR> for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl SubAssign<OpenFlags> for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl SubAssign<MapPermission> for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl SubAssign<PTEFlags> for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl SubAssign<SignalFlags> for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/ops/bit/trait.BitAnd.js b/public/main/implementors/core/ops/bit/trait.BitAnd.js deleted file mode 100644 index f0ac382d..00000000 --- a/public/main/implementors/core/ops/bit/trait.BitAnd.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl BitAnd<IER> for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl BitAnd<LSR> for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl BitAnd<MCR> for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl BitAnd<OpenFlags> for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl BitAnd<MapPermission> for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl BitAnd<PTEFlags> for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl BitAnd<SignalFlags> for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/ops/bit/trait.BitAndAssign.js b/public/main/implementors/core/ops/bit/trait.BitAndAssign.js deleted file mode 100644 index 08fa4fdf..00000000 --- a/public/main/implementors/core/ops/bit/trait.BitAndAssign.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl BitAndAssign<IER> for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl BitAndAssign<LSR> for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl BitAndAssign<MCR> for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl BitAndAssign<OpenFlags> for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl BitAndAssign<MapPermission> for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl BitAndAssign<PTEFlags> for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl BitAndAssign<SignalFlags> for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/ops/bit/trait.BitOr.js b/public/main/implementors/core/ops/bit/trait.BitOr.js deleted file mode 100644 index dd64936b..00000000 --- a/public/main/implementors/core/ops/bit/trait.BitOr.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl BitOr<IER> for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl BitOr<LSR> for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl BitOr<MCR> for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl BitOr<OpenFlags> for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl BitOr<MapPermission> for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl BitOr<PTEFlags> for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl BitOr<SignalFlags> for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/ops/bit/trait.BitOrAssign.js b/public/main/implementors/core/ops/bit/trait.BitOrAssign.js deleted file mode 100644 index fca08d52..00000000 --- a/public/main/implementors/core/ops/bit/trait.BitOrAssign.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl BitOrAssign<IER> for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl BitOrAssign<LSR> for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl BitOrAssign<MCR> for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl BitOrAssign<OpenFlags> for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl BitOrAssign<MapPermission> for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl BitOrAssign<PTEFlags> for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl BitOrAssign<SignalFlags> for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/ops/bit/trait.BitXor.js b/public/main/implementors/core/ops/bit/trait.BitXor.js deleted file mode 100644 index aee7be0c..00000000 --- a/public/main/implementors/core/ops/bit/trait.BitXor.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl BitXor<IER> for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl BitXor<LSR> for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl BitXor<MCR> for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl BitXor<OpenFlags> for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl BitXor<MapPermission> for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl BitXor<PTEFlags> for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl BitXor<SignalFlags> for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/ops/bit/trait.BitXorAssign.js b/public/main/implementors/core/ops/bit/trait.BitXorAssign.js deleted file mode 100644 index b6561ab0..00000000 --- a/public/main/implementors/core/ops/bit/trait.BitXorAssign.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl BitXorAssign<IER> for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl BitXorAssign<LSR> for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl BitXorAssign<MCR> for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl BitXorAssign<OpenFlags> for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl BitXorAssign<MapPermission> for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl BitXorAssign<PTEFlags> for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl BitXorAssign<SignalFlags> for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/ops/bit/trait.Not.js b/public/main/implementors/core/ops/bit/trait.Not.js deleted file mode 100644 index cb671047..00000000 --- a/public/main/implementors/core/ops/bit/trait.Not.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl Not for IER","synthetic":false,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl Not for LSR","synthetic":false,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl Not for MCR","synthetic":false,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl Not for OpenFlags","synthetic":false,"types":["os::fs::inode::OpenFlags"]},{"text":"impl Not for MapPermission","synthetic":false,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl Not for PTEFlags","synthetic":false,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl Not for SignalFlags","synthetic":false,"types":["os::task::signal::SignalFlags"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/ops/deref/trait.Deref.js b/public/main/implementors/core/ops/deref/trait.Deref.js deleted file mode 100644 index 63b78485..00000000 --- a/public/main/implementors/core/ops/deref/trait.Deref.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl Deref for PERIPHERALS","synthetic":false,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl Deref for QUEUE_FRAMES","synthetic":false,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl Deref for BLOCK_DEVICE","synthetic":false,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl Deref for UART","synthetic":false,"types":["os::drivers::chardev::UART"]},{"text":"impl Deref for ROOT_INODE","synthetic":false,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl Deref for FRAME_ALLOCATOR","synthetic":false,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl Deref for KERNEL_SPACE","synthetic":false,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl Deref for INTR_MASKING_INFO","synthetic":false,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<'a, T> Deref for UPIntrRefMut<'a, T>","synthetic":false,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl Deref for PID_ALLOCATOR","synthetic":false,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl Deref for KSTACK_ALLOCATOR","synthetic":false,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl Deref for TASK_MANAGER","synthetic":false,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl Deref for PID2PCB","synthetic":false,"types":["os::task::manager::PID2PCB"]},{"text":"impl Deref for PROCESSOR","synthetic":false,"types":["os::task::processor::PROCESSOR"]},{"text":"impl Deref for INITPROC","synthetic":false,"types":["os::task::INITPROC"]},{"text":"impl Deref for TIMERS","synthetic":false,"types":["os::timer::TIMERS"]},{"text":"impl Deref for DEV_NON_BLOCKING_ACCESS","synthetic":false,"types":["os::DEV_NON_BLOCKING_ACCESS"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/ops/deref/trait.DerefMut.js b/public/main/implementors/core/ops/deref/trait.DerefMut.js deleted file mode 100644 index 764822db..00000000 --- a/public/main/implementors/core/ops/deref/trait.DerefMut.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl<'a, T> DerefMut for UPIntrRefMut<'a, T>","synthetic":false,"types":["os::sync::up::UPIntrRefMut"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/ops/drop/trait.Drop.js b/public/main/implementors/core/ops/drop/trait.Drop.js deleted file mode 100644 index 27321f26..00000000 --- a/public/main/implementors/core/ops/drop/trait.Drop.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl Drop for FrameTracker","synthetic":false,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl<'a, T> Drop for UPIntrRefMut<'a, T>","synthetic":false,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl Drop for PidHandle","synthetic":false,"types":["os::task::id::PidHandle"]},{"text":"impl Drop for KernelStack","synthetic":false,"types":["os::task::id::KernelStack"]},{"text":"impl Drop for TaskUserRes","synthetic":false,"types":["os::task::id::TaskUserRes"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/public/main/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js deleted file mode 100644 index 7024f29f..00000000 --- a/public/main/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl RefUnwindSafe for Stdout","synthetic":true,"types":["os::console::Stdout"]},{"text":"impl<SPI> RefUnwindSafe for SDCard<SPI> where
    SPI: RefUnwindSafe
","synthetic":true,"types":["os::drivers::block::sdcard::SDCard"]},{"text":"impl RefUnwindSafe for CMD","synthetic":true,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl RefUnwindSafe for InitError","synthetic":true,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl RefUnwindSafe for SDCardCSD","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl RefUnwindSafe for SDCardCID","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl RefUnwindSafe for SDCardInfo","synthetic":true,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl RefUnwindSafe for PERIPHERALS","synthetic":true,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl !RefUnwindSafe for SDCardWrapper","synthetic":true,"types":["os::drivers::block::sdcard::SDCardWrapper"]},{"text":"impl !RefUnwindSafe for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl RefUnwindSafe for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl RefUnwindSafe for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl RefUnwindSafe for IER","synthetic":true,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl RefUnwindSafe for LSR","synthetic":true,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl RefUnwindSafe for MCR","synthetic":true,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl RefUnwindSafe for ReadWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]},{"text":"impl RefUnwindSafe for WriteWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]},{"text":"impl RefUnwindSafe for NS16550aRaw","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aRaw"]},{"text":"impl RefUnwindSafe for NS16550aInner","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aInner"]},{"text":"impl<const BASE_ADDR: usize> !RefUnwindSafe for NS16550a<BASE_ADDR>","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550a"]},{"text":"impl RefUnwindSafe for UART","synthetic":true,"types":["os::drivers::chardev::UART"]},{"text":"impl RefUnwindSafe for PLIC","synthetic":true,"types":["os::drivers::plic::PLIC"]},{"text":"impl RefUnwindSafe for IntrTargetPriority","synthetic":true,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl !RefUnwindSafe for OSInode","synthetic":true,"types":["os::fs::inode::OSInode"]},{"text":"impl !RefUnwindSafe for OSInodeInner","synthetic":true,"types":["os::fs::inode::OSInodeInner"]},{"text":"impl RefUnwindSafe for ROOT_INODE","synthetic":true,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl RefUnwindSafe for OpenFlags","synthetic":true,"types":["os::fs::inode::OpenFlags"]},{"text":"impl !RefUnwindSafe for Pipe","synthetic":true,"types":["os::fs::pipe::Pipe"]},{"text":"impl RefUnwindSafe for RingBufferStatus","synthetic":true,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl !RefUnwindSafe for PipeRingBuffer","synthetic":true,"types":["os::fs::pipe::PipeRingBuffer"]},{"text":"impl RefUnwindSafe for Stdin","synthetic":true,"types":["os::fs::stdio::Stdin"]},{"text":"impl RefUnwindSafe for Stdout","synthetic":true,"types":["os::fs::stdio::Stdout"]},{"text":"impl RefUnwindSafe for PhysAddr","synthetic":true,"types":["os::mm::address::PhysAddr"]},{"text":"impl RefUnwindSafe for VirtAddr","synthetic":true,"types":["os::mm::address::VirtAddr"]},{"text":"impl RefUnwindSafe for PhysPageNum","synthetic":true,"types":["os::mm::address::PhysPageNum"]},{"text":"impl RefUnwindSafe for VirtPageNum","synthetic":true,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T> RefUnwindSafe for SimpleRange<T> where
    T: RefUnwindSafe
","synthetic":true,"types":["os::mm::address::SimpleRange"]},{"text":"impl<T> RefUnwindSafe for SimpleRangeIterator<T> where
    T: RefUnwindSafe
","synthetic":true,"types":["os::mm::address::SimpleRangeIterator"]},{"text":"impl RefUnwindSafe for FrameTracker","synthetic":true,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl RefUnwindSafe for StackFrameAllocator","synthetic":true,"types":["os::mm::frame_allocator::StackFrameAllocator"]},{"text":"impl RefUnwindSafe for FRAME_ALLOCATOR","synthetic":true,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl RefUnwindSafe for KERNEL_SPACE","synthetic":true,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl RefUnwindSafe for MemorySet","synthetic":true,"types":["os::mm::memory_set::MemorySet"]},{"text":"impl RefUnwindSafe for MapArea","synthetic":true,"types":["os::mm::memory_set::MapArea"]},{"text":"impl RefUnwindSafe for MapType","synthetic":true,"types":["os::mm::memory_set::MapType"]},{"text":"impl RefUnwindSafe for MapPermission","synthetic":true,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl RefUnwindSafe for PTEFlags","synthetic":true,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl RefUnwindSafe for PageTableEntry","synthetic":true,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl RefUnwindSafe for PageTable","synthetic":true,"types":["os::mm::page_table::PageTable"]},{"text":"impl RefUnwindSafe for UserBuffer","synthetic":true,"types":["os::mm::page_table::UserBuffer"]},{"text":"impl RefUnwindSafe for UserBufferIterator","synthetic":true,"types":["os::mm::page_table::UserBufferIterator"]},{"text":"impl !RefUnwindSafe for Condvar","synthetic":true,"types":["os::sync::condvar::Condvar"]},{"text":"impl !RefUnwindSafe for CondvarInner","synthetic":true,"types":["os::sync::condvar::CondvarInner"]},{"text":"impl !RefUnwindSafe for MutexSpin","synthetic":true,"types":["os::sync::mutex::MutexSpin"]},{"text":"impl !RefUnwindSafe for MutexBlocking","synthetic":true,"types":["os::sync::mutex::MutexBlocking"]},{"text":"impl !RefUnwindSafe for MutexBlockingInner","synthetic":true,"types":["os::sync::mutex::MutexBlockingInner"]},{"text":"impl !RefUnwindSafe for Semaphore","synthetic":true,"types":["os::sync::semaphore::Semaphore"]},{"text":"impl !RefUnwindSafe for SemaphoreInner","synthetic":true,"types":["os::sync::semaphore::SemaphoreInner"]},{"text":"impl<T> !RefUnwindSafe for UPSafeCellRaw<T>","synthetic":true,"types":["os::sync::up::UPSafeCellRaw"]},{"text":"impl RefUnwindSafe for IntrMaskingInfo","synthetic":true,"types":["os::sync::up::IntrMaskingInfo"]},{"text":"impl RefUnwindSafe for INTR_MASKING_INFO","synthetic":true,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<T> !RefUnwindSafe for UPIntrFreeCell<T>","synthetic":true,"types":["os::sync::up::UPIntrFreeCell"]},{"text":"impl<'a, T> !RefUnwindSafe for UPIntrRefMut<'a, T>","synthetic":true,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl RefUnwindSafe for TaskContext","synthetic":true,"types":["os::task::context::TaskContext"]},{"text":"impl RefUnwindSafe for RecycleAllocator","synthetic":true,"types":["os::task::id::RecycleAllocator"]},{"text":"impl RefUnwindSafe for PID_ALLOCATOR","synthetic":true,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl RefUnwindSafe for KSTACK_ALLOCATOR","synthetic":true,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl RefUnwindSafe for PidHandle","synthetic":true,"types":["os::task::id::PidHandle"]},{"text":"impl RefUnwindSafe for KernelStack","synthetic":true,"types":["os::task::id::KernelStack"]},{"text":"impl !RefUnwindSafe for TaskUserRes","synthetic":true,"types":["os::task::id::TaskUserRes"]},{"text":"impl !RefUnwindSafe for TaskManager","synthetic":true,"types":["os::task::manager::TaskManager"]},{"text":"impl RefUnwindSafe for TASK_MANAGER","synthetic":true,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl RefUnwindSafe for PID2PCB","synthetic":true,"types":["os::task::manager::PID2PCB"]},{"text":"impl !RefUnwindSafe for ProcessControlBlock","synthetic":true,"types":["os::task::process::ProcessControlBlock"]},{"text":"impl !RefUnwindSafe for ProcessControlBlockInner","synthetic":true,"types":["os::task::process::ProcessControlBlockInner"]},{"text":"impl !RefUnwindSafe for Processor","synthetic":true,"types":["os::task::processor::Processor"]},{"text":"impl RefUnwindSafe for PROCESSOR","synthetic":true,"types":["os::task::processor::PROCESSOR"]},{"text":"impl RefUnwindSafe for SignalFlags","synthetic":true,"types":["os::task::signal::SignalFlags"]},{"text":"impl !RefUnwindSafe for TaskControlBlock","synthetic":true,"types":["os::task::task::TaskControlBlock"]},{"text":"impl !RefUnwindSafe for TaskControlBlockInner","synthetic":true,"types":["os::task::task::TaskControlBlockInner"]},{"text":"impl RefUnwindSafe for TaskStatus","synthetic":true,"types":["os::task::task::TaskStatus"]},{"text":"impl RefUnwindSafe for INITPROC","synthetic":true,"types":["os::task::INITPROC"]},{"text":"impl !RefUnwindSafe for TimerCondVar","synthetic":true,"types":["os::timer::TimerCondVar"]},{"text":"impl RefUnwindSafe for TIMERS","synthetic":true,"types":["os::timer::TIMERS"]},{"text":"impl RefUnwindSafe for TrapContext","synthetic":true,"types":["os::trap::context::TrapContext"]},{"text":"impl RefUnwindSafe for DEV_NON_BLOCKING_ACCESS","synthetic":true,"types":["os::DEV_NON_BLOCKING_ACCESS"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/public/main/implementors/core/panic/unwind_safe/trait.UnwindSafe.js deleted file mode 100644 index f7764e2b..00000000 --- a/public/main/implementors/core/panic/unwind_safe/trait.UnwindSafe.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl UnwindSafe for Stdout","synthetic":true,"types":["os::console::Stdout"]},{"text":"impl<SPI> UnwindSafe for SDCard<SPI> where
    SPI: UnwindSafe
","synthetic":true,"types":["os::drivers::block::sdcard::SDCard"]},{"text":"impl UnwindSafe for CMD","synthetic":true,"types":["os::drivers::block::sdcard::CMD"]},{"text":"impl UnwindSafe for InitError","synthetic":true,"types":["os::drivers::block::sdcard::InitError"]},{"text":"impl UnwindSafe for SDCardCSD","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCSD"]},{"text":"impl UnwindSafe for SDCardCID","synthetic":true,"types":["os::drivers::block::sdcard::SDCardCID"]},{"text":"impl UnwindSafe for SDCardInfo","synthetic":true,"types":["os::drivers::block::sdcard::SDCardInfo"]},{"text":"impl UnwindSafe for PERIPHERALS","synthetic":true,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl UnwindSafe for SDCardWrapper","synthetic":true,"types":["os::drivers::block::sdcard::SDCardWrapper"]},{"text":"impl !UnwindSafe for VirtIOBlock","synthetic":true,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]},{"text":"impl UnwindSafe for QUEUE_FRAMES","synthetic":true,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl UnwindSafe for BLOCK_DEVICE","synthetic":true,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl UnwindSafe for IER","synthetic":true,"types":["os::drivers::chardev::ns16550a::IER"]},{"text":"impl UnwindSafe for LSR","synthetic":true,"types":["os::drivers::chardev::ns16550a::LSR"]},{"text":"impl UnwindSafe for MCR","synthetic":true,"types":["os::drivers::chardev::ns16550a::MCR"]},{"text":"impl UnwindSafe for ReadWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]},{"text":"impl UnwindSafe for WriteWithoutDLAB","synthetic":true,"types":["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]},{"text":"impl UnwindSafe for NS16550aRaw","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aRaw"]},{"text":"impl UnwindSafe for NS16550aInner","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550aInner"]},{"text":"impl<const BASE_ADDR: usize> !UnwindSafe for NS16550a<BASE_ADDR>","synthetic":true,"types":["os::drivers::chardev::ns16550a::NS16550a"]},{"text":"impl UnwindSafe for UART","synthetic":true,"types":["os::drivers::chardev::UART"]},{"text":"impl UnwindSafe for PLIC","synthetic":true,"types":["os::drivers::plic::PLIC"]},{"text":"impl UnwindSafe for IntrTargetPriority","synthetic":true,"types":["os::drivers::plic::IntrTargetPriority"]},{"text":"impl !UnwindSafe for OSInode","synthetic":true,"types":["os::fs::inode::OSInode"]},{"text":"impl !UnwindSafe for OSInodeInner","synthetic":true,"types":["os::fs::inode::OSInodeInner"]},{"text":"impl UnwindSafe for ROOT_INODE","synthetic":true,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl UnwindSafe for OpenFlags","synthetic":true,"types":["os::fs::inode::OpenFlags"]},{"text":"impl !UnwindSafe for Pipe","synthetic":true,"types":["os::fs::pipe::Pipe"]},{"text":"impl UnwindSafe for RingBufferStatus","synthetic":true,"types":["os::fs::pipe::RingBufferStatus"]},{"text":"impl !UnwindSafe for PipeRingBuffer","synthetic":true,"types":["os::fs::pipe::PipeRingBuffer"]},{"text":"impl UnwindSafe for Stdin","synthetic":true,"types":["os::fs::stdio::Stdin"]},{"text":"impl UnwindSafe for Stdout","synthetic":true,"types":["os::fs::stdio::Stdout"]},{"text":"impl UnwindSafe for PhysAddr","synthetic":true,"types":["os::mm::address::PhysAddr"]},{"text":"impl UnwindSafe for VirtAddr","synthetic":true,"types":["os::mm::address::VirtAddr"]},{"text":"impl UnwindSafe for PhysPageNum","synthetic":true,"types":["os::mm::address::PhysPageNum"]},{"text":"impl UnwindSafe for VirtPageNum","synthetic":true,"types":["os::mm::address::VirtPageNum"]},{"text":"impl<T> UnwindSafe for SimpleRange<T> where
    T: UnwindSafe
","synthetic":true,"types":["os::mm::address::SimpleRange"]},{"text":"impl<T> UnwindSafe for SimpleRangeIterator<T> where
    T: UnwindSafe
","synthetic":true,"types":["os::mm::address::SimpleRangeIterator"]},{"text":"impl UnwindSafe for FrameTracker","synthetic":true,"types":["os::mm::frame_allocator::FrameTracker"]},{"text":"impl UnwindSafe for StackFrameAllocator","synthetic":true,"types":["os::mm::frame_allocator::StackFrameAllocator"]},{"text":"impl UnwindSafe for FRAME_ALLOCATOR","synthetic":true,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl UnwindSafe for KERNEL_SPACE","synthetic":true,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl UnwindSafe for MemorySet","synthetic":true,"types":["os::mm::memory_set::MemorySet"]},{"text":"impl UnwindSafe for MapArea","synthetic":true,"types":["os::mm::memory_set::MapArea"]},{"text":"impl UnwindSafe for MapType","synthetic":true,"types":["os::mm::memory_set::MapType"]},{"text":"impl UnwindSafe for MapPermission","synthetic":true,"types":["os::mm::memory_set::MapPermission"]},{"text":"impl UnwindSafe for PTEFlags","synthetic":true,"types":["os::mm::page_table::PTEFlags"]},{"text":"impl UnwindSafe for PageTableEntry","synthetic":true,"types":["os::mm::page_table::PageTableEntry"]},{"text":"impl UnwindSafe for PageTable","synthetic":true,"types":["os::mm::page_table::PageTable"]},{"text":"impl !UnwindSafe for UserBuffer","synthetic":true,"types":["os::mm::page_table::UserBuffer"]},{"text":"impl !UnwindSafe for UserBufferIterator","synthetic":true,"types":["os::mm::page_table::UserBufferIterator"]},{"text":"impl !UnwindSafe for Condvar","synthetic":true,"types":["os::sync::condvar::Condvar"]},{"text":"impl !UnwindSafe for CondvarInner","synthetic":true,"types":["os::sync::condvar::CondvarInner"]},{"text":"impl UnwindSafe for MutexSpin","synthetic":true,"types":["os::sync::mutex::MutexSpin"]},{"text":"impl !UnwindSafe for MutexBlocking","synthetic":true,"types":["os::sync::mutex::MutexBlocking"]},{"text":"impl !UnwindSafe for MutexBlockingInner","synthetic":true,"types":["os::sync::mutex::MutexBlockingInner"]},{"text":"impl !UnwindSafe for Semaphore","synthetic":true,"types":["os::sync::semaphore::Semaphore"]},{"text":"impl !UnwindSafe for SemaphoreInner","synthetic":true,"types":["os::sync::semaphore::SemaphoreInner"]},{"text":"impl<T> UnwindSafe for UPSafeCellRaw<T> where
    T: UnwindSafe
","synthetic":true,"types":["os::sync::up::UPSafeCellRaw"]},{"text":"impl UnwindSafe for IntrMaskingInfo","synthetic":true,"types":["os::sync::up::IntrMaskingInfo"]},{"text":"impl UnwindSafe for INTR_MASKING_INFO","synthetic":true,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl<T> UnwindSafe for UPIntrFreeCell<T> where
    T: UnwindSafe
","synthetic":true,"types":["os::sync::up::UPIntrFreeCell"]},{"text":"impl<'a, T> !UnwindSafe for UPIntrRefMut<'a, T>","synthetic":true,"types":["os::sync::up::UPIntrRefMut"]},{"text":"impl UnwindSafe for TaskContext","synthetic":true,"types":["os::task::context::TaskContext"]},{"text":"impl UnwindSafe for RecycleAllocator","synthetic":true,"types":["os::task::id::RecycleAllocator"]},{"text":"impl UnwindSafe for PID_ALLOCATOR","synthetic":true,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl UnwindSafe for KSTACK_ALLOCATOR","synthetic":true,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl UnwindSafe for PidHandle","synthetic":true,"types":["os::task::id::PidHandle"]},{"text":"impl UnwindSafe for KernelStack","synthetic":true,"types":["os::task::id::KernelStack"]},{"text":"impl !UnwindSafe for TaskUserRes","synthetic":true,"types":["os::task::id::TaskUserRes"]},{"text":"impl !UnwindSafe for TaskManager","synthetic":true,"types":["os::task::manager::TaskManager"]},{"text":"impl UnwindSafe for TASK_MANAGER","synthetic":true,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl UnwindSafe for PID2PCB","synthetic":true,"types":["os::task::manager::PID2PCB"]},{"text":"impl !UnwindSafe for ProcessControlBlock","synthetic":true,"types":["os::task::process::ProcessControlBlock"]},{"text":"impl !UnwindSafe for ProcessControlBlockInner","synthetic":true,"types":["os::task::process::ProcessControlBlockInner"]},{"text":"impl !UnwindSafe for Processor","synthetic":true,"types":["os::task::processor::Processor"]},{"text":"impl UnwindSafe for PROCESSOR","synthetic":true,"types":["os::task::processor::PROCESSOR"]},{"text":"impl UnwindSafe for SignalFlags","synthetic":true,"types":["os::task::signal::SignalFlags"]},{"text":"impl !UnwindSafe for TaskControlBlock","synthetic":true,"types":["os::task::task::TaskControlBlock"]},{"text":"impl !UnwindSafe for TaskControlBlockInner","synthetic":true,"types":["os::task::task::TaskControlBlockInner"]},{"text":"impl UnwindSafe for TaskStatus","synthetic":true,"types":["os::task::task::TaskStatus"]},{"text":"impl UnwindSafe for INITPROC","synthetic":true,"types":["os::task::INITPROC"]},{"text":"impl !UnwindSafe for TimerCondVar","synthetic":true,"types":["os::timer::TimerCondVar"]},{"text":"impl UnwindSafe for TIMERS","synthetic":true,"types":["os::timer::TIMERS"]},{"text":"impl UnwindSafe for TrapContext","synthetic":true,"types":["os::trap::context::TrapContext"]},{"text":"impl UnwindSafe for DEV_NON_BLOCKING_ACCESS","synthetic":true,"types":["os::DEV_NON_BLOCKING_ACCESS"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/easy_fs/block_dev/trait.BlockDevice.js b/public/main/implementors/easy_fs/block_dev/trait.BlockDevice.js deleted file mode 100644 index 1a85f316..00000000 --- a/public/main/implementors/easy_fs/block_dev/trait.BlockDevice.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl BlockDevice for SDCardWrapper","synthetic":false,"types":["os::drivers::block::sdcard::SDCardWrapper"]},{"text":"impl BlockDevice for VirtIOBlock","synthetic":false,"types":["os::drivers::block::virtio_blk::VirtIOBlock"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/lazy_static/trait.LazyStatic.js b/public/main/implementors/lazy_static/trait.LazyStatic.js deleted file mode 100644 index 377eff0e..00000000 --- a/public/main/implementors/lazy_static/trait.LazyStatic.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = [{"text":"impl LazyStatic for PERIPHERALS","synthetic":false,"types":["os::drivers::block::sdcard::PERIPHERALS"]},{"text":"impl LazyStatic for QUEUE_FRAMES","synthetic":false,"types":["os::drivers::block::virtio_blk::QUEUE_FRAMES"]},{"text":"impl LazyStatic for BLOCK_DEVICE","synthetic":false,"types":["os::drivers::block::BLOCK_DEVICE"]},{"text":"impl LazyStatic for UART","synthetic":false,"types":["os::drivers::chardev::UART"]},{"text":"impl LazyStatic for ROOT_INODE","synthetic":false,"types":["os::fs::inode::ROOT_INODE"]},{"text":"impl LazyStatic for FRAME_ALLOCATOR","synthetic":false,"types":["os::mm::frame_allocator::FRAME_ALLOCATOR"]},{"text":"impl LazyStatic for KERNEL_SPACE","synthetic":false,"types":["os::mm::memory_set::KERNEL_SPACE"]},{"text":"impl LazyStatic for INTR_MASKING_INFO","synthetic":false,"types":["os::sync::up::INTR_MASKING_INFO"]},{"text":"impl LazyStatic for PID_ALLOCATOR","synthetic":false,"types":["os::task::id::PID_ALLOCATOR"]},{"text":"impl LazyStatic for KSTACK_ALLOCATOR","synthetic":false,"types":["os::task::id::KSTACK_ALLOCATOR"]},{"text":"impl LazyStatic for TASK_MANAGER","synthetic":false,"types":["os::task::manager::TASK_MANAGER"]},{"text":"impl LazyStatic for PID2PCB","synthetic":false,"types":["os::task::manager::PID2PCB"]},{"text":"impl LazyStatic for PROCESSOR","synthetic":false,"types":["os::task::processor::PROCESSOR"]},{"text":"impl LazyStatic for INITPROC","synthetic":false,"types":["os::task::INITPROC"]},{"text":"impl LazyStatic for TIMERS","synthetic":false,"types":["os::timer::TIMERS"]},{"text":"impl LazyStatic for DEV_NON_BLOCKING_ACCESS","synthetic":false,"types":["os::DEV_NON_BLOCKING_ACCESS"]}]; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/os/drivers/chardev/trait.CharDevice.js b/public/main/implementors/os/drivers/chardev/trait.CharDevice.js deleted file mode 100644 index 34fffcbd..00000000 --- a/public/main/implementors/os/drivers/chardev/trait.CharDevice.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = []; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/os/fs/trait.File.js b/public/main/implementors/os/fs/trait.File.js deleted file mode 100644 index 34fffcbd..00000000 --- a/public/main/implementors/os/fs/trait.File.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = []; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/os/mm/address/trait.StepByOne.js b/public/main/implementors/os/mm/address/trait.StepByOne.js deleted file mode 100644 index 34fffcbd..00000000 --- a/public/main/implementors/os/mm/address/trait.StepByOne.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = []; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/os/mm/frame_allocator/trait.FrameAllocator.js b/public/main/implementors/os/mm/frame_allocator/trait.FrameAllocator.js deleted file mode 100644 index 34fffcbd..00000000 --- a/public/main/implementors/os/mm/frame_allocator/trait.FrameAllocator.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = []; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/implementors/os/sync/mutex/trait.Mutex.js b/public/main/implementors/os/sync/mutex/trait.Mutex.js deleted file mode 100644 index 34fffcbd..00000000 --- a/public/main/implementors/os/sync/mutex/trait.Mutex.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = {}; -implementors["os"] = []; -if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/public/main/light.css b/public/main/light.css deleted file mode 100644 index e8cf0741..00000000 --- a/public/main/light.css +++ /dev/null @@ -1 +0,0 @@ - body{background-color:white;color:black;}h1,h2,h3,h4{color:black;}h1.fqn{border-bottom-color:#DDDDDD;}h2,h3,h4{border-bottom-color:#DDDDDD;}.in-band{background-color:white;}.invisible{background:rgba(0,0,0,0);}.docblock code,.docblock-short code{background-color:#F5F5F5;}pre,.rustdoc.source .example-wrap{background-color:#F5F5F5;}.sidebar{background-color:#F5F5F5;}*{scrollbar-color:rgba(36,37,39,0.6) #e6e6e6;}.sidebar{scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;}.rust-logo{}::-webkit-scrollbar-track{background-color:#ecebeb;}::-webkit-scrollbar-thumb{background-color:rgba(36,37,39,0.6);}.sidebar::-webkit-scrollbar-track{background-color:#dcdcdc;}.sidebar::-webkit-scrollbar-thumb{background-color:rgba(36,37,39,0.6);}.sidebar .current{background-color:#fff;}.source .sidebar{background-color:#f1f1f1;}.sidebar .location{border-color:#000;background-color:#fff;color:#333;}.sidebar .version{border-bottom-color:#DDD;}.sidebar-title{border-top-color:#777;border-bottom-color:#777;}.block a:hover{background:#F5F5F5;}.line-numbers span{color:#c67e2d;}.line-numbers .line-highlighted{background-color:#FDFFD3 !important;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom-color:#ddd;}.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#4E4C4C;}.search-results a:hover{background-color:#ddd;}.search-results a:focus{color:#000 !important;background-color:#ccc;}.search-results a:focus span{color:#000 !important;}a.result-trait:focus{background-color:#c7b6ff;}a.result-traitalias:focus{background-color:#c7b6ff;}a.result-mod:focus,a.result-externcrate:focus{background-color:#afc6e4;}a.result-enum:focus{background-color:#e7b1a0;}a.result-struct:focus{background-color:#e7b1a0;}a.result-union:focus{background-color:#e7b1a0;}a.result-fn:focus,a.result-method:focus,a.result-tymethod:focus{background-color:#c6afb3;}a.result-type:focus{background-color:#e7b1a0;}a.result-associatedtype:focus{background-color:#afc6e4;}a.result-foreigntype:focus{background-color:#e7b1a0;}a.result-attr:focus,a.result-derive:focus,a.result-macro:focus{background-color:#8ce488;}a.result-constant:focus,a.result-static:focus{background-color:#afc6e4;}a.result-primitive:focus{background-color:#e7b1a0;}a.result-keyword:focus{background-color:#afc6e4;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#AD378A;}.content span.struct,.content a.struct,.block a.current.struct{color:#AD378A;}.content span.type,.content a.type,.block a.current.type{color:#AD378A;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#3873AD;}.content span.associatedtype,.content a.associatedtype,.block a.current.associatedtype{color:#3873AD;}.content span.attr,.content a.attr,.block a.current.attr,.content span.derive,.content a.derive,.block a.current.derive,.content span.macro,.content a.macro,.block a.current.macro{color:#068000;}.content span.union,.content a.union,.block a.current.union{color:#AD378A;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#3873AD;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#AD378A;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#3873AD;}.content span.trait,.content a.trait,.block a.current.trait{color:#6E4FC9;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#5137AD;}.content span.fn,.content a.fn,.block a.current.fn,.content span.method,.content a.method,.block a.current.method,.content span.tymethod,.content a.tymethod,.block a.current.tymethod,.content .fnname{color:#AD7C37;}.content span.keyword,.content a.keyword,.block a.current.keyword{color:#3873AD;}nav:not(.sidebar){border-bottom-color:#e0e0e0;}nav.main .current{border-top-color:#000;border-bottom-color:#000;}nav.main .separator{border:1px solid #000;}a{color:#3873AD;}a#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,pre.rust a,.sidebar a,.in-band a{color:#000;}.search-results a{color:initial;}a.test-arrow{color:#f5f5f5;}body.source .example-wrap pre.rust a{background:#eee;}details.rustdoc-toggle>summary.hideme>span,details.rustdoc-toggle>summary::before,details.undocumented>summary::before{color:#999;}#crate-search{color:#555;background-color:white;border-color:#e0e0e0;box-shadow:0 0 0 1px #e0e0e0,0 0 0 2px transparent;}.search-input{color:#555;background-color:white;box-shadow:0 0 0 1px #e0e0e0,0 0 0 2px transparent;}.search-input:focus{border-color:#66afe9;}#crate-search+.search-input:focus{box-shadow:0 0 8px #078dd8;}.module-item .stab,.import-item .stab{color:#000;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;}.stab.deprecated{background:#ffc4c4;border-color:#db7b7b;}.stab.portability{background:#F3DFFF;border-color:#b07bdb;}.stab.portability>code{background:none;}#help>div{background:#e9e9e9;border-color:#bfbfbf;}#help span.bottom,#help span.top{border-color:#bfbfbf;}.rightside,.out-of-band{color:grey;}.result-name .primitive>i,.result-name .keyword>i{color:black;}.line-numbers :target{background-color:transparent;}pre.rust .kw{color:#8959A8;}pre.rust .kw-2,pre.rust .prelude-ty{color:#4271AE;}pre.rust .number,pre.rust .string{color:#718C00;}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute,pre.rust .attribute .ident{color:#C82829;}pre.rust .comment{color:#8E908C;}pre.rust .doccomment{color:#4D4D4C;}pre.rust .macro,pre.rust .macro-nonterminal{color:#3E999F;}pre.rust .lifetime{color:#B76514;}pre.rust .question-mark{color:#ff9011;}.example-wrap>pre.line-number{border-color:#c7c7c7;}a.test-arrow{background-color:rgb(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}.toggle-label,.code-attribute{color:#999;}:target{background:#FDFFD3;border-right:3px solid #AD7C37;}pre.compile_fail{border-left:2px solid rgba(255,0,0,.5);}pre.compile_fail:hover,.information:hover+pre.compile_fail{border-left:2px solid #f00;}pre.should_panic{border-left:2px solid rgba(255,0,0,.5);}pre.should_panic:hover,.information:hover+pre.should_panic{border-left:2px solid #f00;}pre.ignore{border-left:2px solid rgba(255,142,0,.6);}pre.ignore:hover,.information:hover+pre.ignore{border-left:2px solid #ff9200;}.tooltip.compile_fail{color:rgba(255,0,0,.5);}.information>.compile_fail:hover{color:#f00;}.tooltip.should_panic{color:rgba(255,0,0,.5);}.information>.should_panic:hover{color:#f00;}.tooltip.ignore{color:rgba(255,142,0,.6);}.information>.ignore:hover{color:#ff9200;}.search-failed a{color:#3873AD;}.tooltip::after{background-color:#000;color:#fff;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#eee;border-color:#999;}.notable-traits-tooltiptext .notable{border-bottom-color:#DDDDDD;}#titles>button:not(.selected){background-color:#e6e6e6;border-top-color:#e6e6e6;}#titles>button:hover,#titles>button.selected{background-color:#ffffff;border-top-color:#0089ff;}#titles>button>div.count{color:#888;}@media (max-width:700px){.sidebar-menu{background-color:#F5F5F5;border-bottom-color:#e0e0e0;border-right-color:#e0e0e0;}.sidebar-elems{background-color:#F5F5F5;border-right-color:#000;}#sidebar-filler{background-color:#F5F5F5;border-bottom-color:#e0e0e0;}}kbd{color:#000;background-color:#fafbfc;border-color:#d1d5da;border-bottom-color:#c6cbd1;box-shadow-color:#c6cbd1;}#theme-picker,#settings-menu,#help-button{border-color:#e0e0e0;background-color:#fff;}#theme-picker:hover,#theme-picker:focus,#settings-menu:hover,#settings-menu:focus,#help-button:hover,#help-button:focus{border-color:#717171;}#copy-path{color:#999;}#copy-path>img{filter:invert(50%);}#copy-path:hover>img{filter:invert(35%);}#theme-choices{border-color:#ccc;background-color:#fff;}#theme-choices>button:not(:first-child){border-top-color:#e0e0e0;}#theme-choices>button:hover,#theme-choices>button:focus{background-color:#eee;}@media (max-width:700px){#theme-picker{background:#fff;}}#all-types{background-color:#fff;}#all-types:hover{background-color:#f9f9f9;}.search-results .result-name span.alias{color:#000;}.search-results .result-name span.grey{color:#999;}#sidebar-toggle{background-color:#F5F5F5;}#sidebar-toggle:hover{background-color:#E0E0E0;}#source-sidebar{background-color:#F5F5F5;}#source-sidebar>.title{border-bottom-color:#ccc;}div.files>a:hover,div.name:hover{background-color:#E0E0E0;}div.files>.selected{background-color:#fff;}.setting-line>.title{border-bottom-color:#D5D5D5;} \ No newline at end of file diff --git a/public/main/main.js b/public/main/main.js deleted file mode 100644 index 3a235b2a..00000000 --- a/public/main/main.js +++ /dev/null @@ -1,8 +0,0 @@ -if(!String.prototype.startsWith){String.prototype.startsWith=function(searchString,position){position=position||0;return this.indexOf(searchString,position)===position}}if(!String.prototype.endsWith){String.prototype.endsWith=function(suffix,length){var l=length||this.length;return this.indexOf(suffix,l-suffix.length)!==-1}}if(!DOMTokenList.prototype.add){DOMTokenList.prototype.add=function(className){if(className&&!hasClass(this,className)){if(this.className&&this.className.length>0){this.className+=" "+className}else{this.className=className}}}}if(!DOMTokenList.prototype.remove){DOMTokenList.prototype.remove=function(className){if(className&&this.className){this.className=(" "+this.className+" ").replace(" "+className+" "," ").trim()}}}function getVar(name){var el=document.getElementById("rustdoc-vars");if(el){return el.attributes["data-"+name].value}else{return null}}function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}(function(){window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");window.searchJS=resourcePath("search",".js");window.searchIndexJS=resourcePath("search-index",".js");var sidebarVars=document.getElementById("sidebar-vars");if(sidebarVars){window.sidebarCurrent={name:sidebarVars.attributes["data-name"].value,ty:sidebarVars.attributes["data-ty"].value,relpath:sidebarVars.attributes["data-relpath"].value,}}}());function getVirtualKey(ev){if("key"in ev&&typeof ev.key!="undefined"){return ev.key}var c=ev.charCode||ev.keyCode;if(c==27){return"Escape"}return String.fromCharCode(c)}var THEME_PICKER_ELEMENT_ID="theme-picker";var THEMES_ELEMENT_ID="theme-choices";var MAIN_ID="main-content";function getThemesElement(){return document.getElementById(THEMES_ELEMENT_ID)}function getThemePickerElement(){return document.getElementById(THEME_PICKER_ELEMENT_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function showThemeButtonState(){var themePicker=getThemePickerElement();var themeChoices=getThemesElement();themeChoices.style.display="block";themePicker.style.borderBottomRightRadius="0";themePicker.style.borderBottomLeftRadius="0"}function hideThemeButtonState(){var themePicker=getThemePickerElement();var themeChoices=getThemesElement();themeChoices.style.display="none";themePicker.style.borderBottomRightRadius="3px";themePicker.style.borderBottomLeftRadius="3px"}(function(){if(!document.location.href.startsWith("file:///")){return}var themeChoices=getThemesElement();var themePicker=getThemePickerElement();var availableThemes=getVar("themes").split(",");removeClass(themeChoices.parentElement,"hidden");function switchThemeButtonState(){if(themeChoices.style.display==="block"){hideThemeButtonState()}else{showThemeButtonState()}}function handleThemeButtonsBlur(e){var active=document.activeElement;var related=e.relatedTarget;if(active.id!==THEME_PICKER_ELEMENT_ID&&(!active.parentNode||active.parentNode.id!==THEMES_ELEMENT_ID)&&(!related||(related.id!==THEME_PICKER_ELEMENT_ID&&(!related.parentNode||related.parentNode.id!==THEMES_ELEMENT_ID)))){hideThemeButtonState()}}themePicker.onclick=switchThemeButtonState;themePicker.onblur=handleThemeButtonsBlur;availableThemes.forEach(function(item){var but=document.createElement("button");but.textContent=item;but.onclick=function(){switchTheme(window.currentTheme,window.mainTheme,item,true);useSystemTheme(false)};but.onblur=handleThemeButtonsBlur;themeChoices.appendChild(but)})}());(function(){"use strict";window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:function(){return document.getElementById("search")},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:function(){if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},focus:function(){searchState.input.focus()},defocus:function(){searchState.input.blur()},showResults:function(search){if(search===null||typeof search==='undefined'){search=searchState.outputElement()}addClass(main,"hidden");removeClass(search,"hidden");searchState.mouseMovedAfterSearch=false;document.title=searchState.title},hideResults:function(search){if(search===null||typeof search==='undefined'){search=searchState.outputElement()}addClass(search,"hidden");removeClass(main,"hidden");document.title=searchState.titleBeforeSearch;if(searchState.browserSupportsHistoryApi()){history.replaceState("",window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}},getQueryStringParams:function(){var params={};window.location.search.substring(1).split("&").map(function(s){var pair=s.split("=");params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},putBackSearch:function(search_input){var search=searchState.outputElement();if(search_input.value!==""&&hasClass(search,"hidden")){searchState.showResults(search);if(searchState.browserSupportsHistoryApi()){var extra="?search="+encodeURIComponent(search_input.value);history.replaceState(search_input.value,"",getNakedUrl()+extra+window.location.hash)}document.title=searchState.title}},browserSupportsHistoryApi:function(){return window.history&&typeof window.history.pushState==="function"},setup:function(){var search_input=searchState.input;if(!searchState.input){return}function loadScript(url){var script=document.createElement('script');script.src=url;document.head.append(script)}var searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(window.searchJS);loadScript(window.searchIndexJS)}}search_input.addEventListener("focus",function(){searchState.putBackSearch(this);search_input.origPlaceholder=searchState.input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});search_input.addEventListener("blur",function(){search_input.placeholder=searchState.input.origPlaceholder});if(search_input.value!=''){loadSearch()}var params=searchState.getQueryStringParams();if(params.search!==undefined){var search=searchState.outputElement();search.innerHTML="

"+searchState.loadingText+"

";searchState.showResults(search);loadSearch()}},};function getPageId(){if(window.location.hash){var tmp=window.location.hash.replace(/^#/,"");if(tmp.length>0){return tmp}}return null}function showSidebar(){var elems=document.getElementsByClassName("sidebar-elems")[0];if(elems){addClass(elems,"show-it")}var sidebar=document.getElementsByClassName("sidebar")[0];if(sidebar){addClass(sidebar,"mobile");var filler=document.getElementById("sidebar-filler");if(!filler){var div=document.createElement("div");div.id="sidebar-filler";sidebar.appendChild(div)}}}function hideSidebar(){var elems=document.getElementsByClassName("sidebar-elems")[0];if(elems){removeClass(elems,"show-it")}var sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"mobile");var filler=document.getElementById("sidebar-filler");if(filler){filler.remove()}document.getElementsByTagName("body")[0].style.marginTop=""}var toggleAllDocsId="toggle-all-docs";var main=document.getElementById(MAIN_ID);var savedHash="";function handleHashes(ev){var elem;var search=searchState.outputElement();if(ev!==null&&search&&!hasClass(search,"hidden")&&ev.newURL){searchState.hideResults(search);var hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(searchState.browserSupportsHistoryApi()){history.replaceState(hash,"",getNakedUrl()+window.location.search+"#"+hash)}elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}if(savedHash!==window.location.hash){savedHash=window.location.hash;if(savedHash.length===0){return}expandSection(savedHash.slice(1))}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function getHelpElement(build){if(build){buildHelperPopup()}return document.getElementById("help")}function displayHelp(display,ev,help){if(display){help=help?help:getHelpElement(true);if(hasClass(help,"hidden")){ev.preventDefault();removeClass(help,"hidden");addClass(document.body,"blur")}}else{help=help?help:getHelpElement(false);if(help&&!hasClass(help,"hidden")){ev.preventDefault();addClass(help,"hidden");removeClass(document.body,"blur")}}}function handleEscape(ev){var help=getHelpElement(false);var search=searchState.outputElement();if(help&&!hasClass(help,"hidden")){displayHelp(false,ev,help)}else if(search&&!hasClass(search,"hidden")){searchState.clearInputTimeout();ev.preventDefault();searchState.hideResults(search)}searchState.defocus();hideThemeButtonState()}var disableShortcuts=getSettingValue("disable-shortcuts")==="true";function handleShortcut(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":displayHelp(false,ev);ev.preventDefault();searchState.focus();break;case"+":case"-":ev.preventDefault();toggleAllDocs();break;case"?":displayHelp(true,ev);break;case"t":case"T":displayHelp(false,ev);ev.preventDefault();var themePicker=getThemePickerElement();themePicker.click();themePicker.focus();break;default:if(getThemePickerElement().parentNode.contains(ev.target)){handleThemeKeyDown(ev)}}}}function handleThemeKeyDown(ev){var active=document.activeElement;var themes=getThemesElement();switch(getVirtualKey(ev)){case"ArrowUp":ev.preventDefault();if(active.previousElementSibling&&ev.target.id!==THEME_PICKER_ELEMENT_ID){active.previousElementSibling.focus()}else{showThemeButtonState();themes.lastElementChild.focus()}break;case"ArrowDown":ev.preventDefault();if(active.nextElementSibling&&ev.target.id!==THEME_PICKER_ELEMENT_ID){active.nextElementSibling.focus()}else{showThemeButtonState();themes.firstElementChild.focus()}break;case"Enter":case"Return":case"Space":if(ev.target.id===THEME_PICKER_ELEMENT_ID&&themes.style.display==="none"){ev.preventDefault();showThemeButtonState();themes.firstElementChild.focus()}break;case"Home":ev.preventDefault();themes.firstElementChild.focus();break;case"End":ev.preventDefault();themes.lastElementChild.focus();break}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);(function(){var x=document.getElementsByClassName("version-selector");if(x.length>0){x[0].onchange=function(){var i,match,url=document.location.href,stripped="",len=window.rootPath.match(/\.\.\//g).length+1;for(i=0;i .in-band > .trait").textContent;var baseIdName="impl-"+traitName+"-";var libs=Object.getOwnPropertyNames(imp);for(var i=0,llength=libs.length;i summary:not(.hideme)"),function(el){el.addEventListener("click",function(e){if(e.target.tagName!="SUMMARY"&&e.target.tagName!="A"){e.preventDefault()}})});onEachLazy(document.getElementsByClassName("notable-traits"),function(e){e.onclick=function(){this.getElementsByClassName('notable-traits-tooltiptext')[0].classList.toggle("force-tooltip")}});var sidebar_menu=document.getElementsByClassName("sidebar-menu")[0];if(sidebar_menu){sidebar_menu.onclick=function(){var sidebar=document.getElementsByClassName("sidebar")[0];if(hasClass(sidebar,"mobile")){hideSidebar()}else{showSidebar()}}}var buildHelperPopup=function(){var popup=document.createElement("aside");addClass(popup,"hidden");popup.id="help";popup.addEventListener("click",function(ev){if(ev.target===popup){displayHelp(false,ev)}});var book_info=document.createElement("span");book_info.className="top";book_info.innerHTML="You can find more information in \ - the rustdoc book.";var container=document.createElement("div");var shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["T","Focus the theme picker menu"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(function(x){return"
"+x[0].split(" ").map(function(y,index){return(index&1)===0?""+y+"":" "+y+" "}).join("")+"
"+x[1]+"
"}).join("");var div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

Keyboard Shortcuts

"+shortcuts+"
";var infos=["Prefix searches with a type followed by a colon (e.g., fn:) to \ - restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ - enum, trait, type, macro, \ - and const.","Search functions by type signature (e.g., vec -> usize or \ - * -> vec)","Search multiple things at once by splitting your query with comma (e.g., \ - str,u8 or String,struct:Vec,test)","You can look for items with an exact name by putting double quotes around \ - your request: \"string\"","Look for items inside another one by searching for a path: vec::Vec",].map(function(x){return"

"+x+"

"}).join("");var div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

Search Tricks

"+infos;container.appendChild(book_info);container.appendChild(div_shortcuts);container.appendChild(div_infos);var rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";var rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);container.appendChild(rustdoc_version);popup.appendChild(container);insertAfter(popup,document.querySelector("main"));buildHelperPopup=function(){}};onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){var reset_button_timeout=null;window.copy_path=function(but){var parent=but.parentElement;var path=[];onEach(parent.childNodes,function(child){if(child.tagName==='A'){path.push(child.textContent)}});var el=document.createElement('textarea');el.value=path.join('::');el.setAttribute('readonly','');el.style.position='absolute';el.style.left='-9999px';document.body.appendChild(el);el.select();document.execCommand('copy');document.body.removeChild(el);but.children[0].style.display='none';var tmp;if(but.childNodes.length<2){tmp=document.createTextNode('✓');but.appendChild(tmp)}else{onEachLazy(but.childNodes,function(e){if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent='✓'}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent='';reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}()) \ No newline at end of file diff --git a/public/main/normalize.css b/public/main/normalize.css deleted file mode 100644 index 469959f1..00000000 --- a/public/main/normalize.css +++ /dev/null @@ -1,2 +0,0 @@ - /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ -html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type="button"],[type="reset"],[type="submit"],button{-webkit-appearance:button}[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none} \ No newline at end of file diff --git a/public/main/noscript.css b/public/main/noscript.css deleted file mode 100644 index 8ad88640..00000000 --- a/public/main/noscript.css +++ /dev/null @@ -1 +0,0 @@ - #main-content .attributes{margin-left:0 !important;}#copy-path{display:none;}.sub{display:none;}#theme-picker{display:none;} \ No newline at end of file diff --git a/public/main/os/all.html b/public/main/os/all.html deleted file mode 100644 index 95779b96..00000000 --- a/public/main/os/all.html +++ /dev/null @@ -1,5 +0,0 @@ -List of all items in this crate -

List of all items

Structs

Enums

Traits

Macros

Functions

Typedefs

Statics

Constants

- \ No newline at end of file diff --git a/public/main/os/board/constant.CLOCK_FREQ.html b/public/main/os/board/constant.CLOCK_FREQ.html deleted file mode 100644 index 21b6c272..00000000 --- a/public/main/os/board/constant.CLOCK_FREQ.html +++ /dev/null @@ -1,6 +0,0 @@ -CLOCK_FREQ in os::board - Rust -
-

Constant os::board::CLOCK_FREQ

source · []
pub const CLOCK_FREQ: usize = 12500000;
- \ No newline at end of file diff --git a/public/main/os/board/constant.MMIO.html b/public/main/os/board/constant.MMIO.html deleted file mode 100644 index 259fb4da..00000000 --- a/public/main/os/board/constant.MMIO.html +++ /dev/null @@ -1,6 +0,0 @@ -MMIO in os::board - Rust -
-

Constant os::board::MMIO

source · []
pub const MMIO: &[(usize, usize)];
- \ No newline at end of file diff --git a/public/main/os/board/constant.VIRT_PLIC.html b/public/main/os/board/constant.VIRT_PLIC.html deleted file mode 100644 index 9d7fc584..00000000 --- a/public/main/os/board/constant.VIRT_PLIC.html +++ /dev/null @@ -1,6 +0,0 @@ -VIRT_PLIC in os::board - Rust -
-

Constant os::board::VIRT_PLIC

source · []
pub const VIRT_PLIC: usize = 0xC00_0000;
- \ No newline at end of file diff --git a/public/main/os/board/constant.VIRT_UART.html b/public/main/os/board/constant.VIRT_UART.html deleted file mode 100644 index 5239ac35..00000000 --- a/public/main/os/board/constant.VIRT_UART.html +++ /dev/null @@ -1,6 +0,0 @@ -VIRT_UART in os::board - Rust -
-

Constant os::board::VIRT_UART

source · []
pub const VIRT_UART: usize = 0x1000_0000;
- \ No newline at end of file diff --git a/public/main/os/board/fn.device_init.html b/public/main/os/board/fn.device_init.html deleted file mode 100644 index 30410d0f..00000000 --- a/public/main/os/board/fn.device_init.html +++ /dev/null @@ -1,6 +0,0 @@ -device_init in os::board - Rust -
-

Function os::board::device_init

source · []
pub fn device_init()
- \ No newline at end of file diff --git a/public/main/os/board/fn.irq_handler.html b/public/main/os/board/fn.irq_handler.html deleted file mode 100644 index 8b54b1a9..00000000 --- a/public/main/os/board/fn.irq_handler.html +++ /dev/null @@ -1,6 +0,0 @@ -irq_handler in os::board - Rust -
-

Function os::board::irq_handler

source · []
pub fn irq_handler()
- \ No newline at end of file diff --git a/public/main/os/board/index.html b/public/main/os/board/index.html deleted file mode 100644 index 3525a234..00000000 --- a/public/main/os/board/index.html +++ /dev/null @@ -1,9 +0,0 @@ -os::board - Rust -
- \ No newline at end of file diff --git a/public/main/os/board/sidebar-items.js b/public/main/os/board/sidebar-items.js deleted file mode 100644 index 72111b17..00000000 --- a/public/main/os/board/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"constant":[["CLOCK_FREQ",""],["MMIO",""],["VIRT_PLIC",""],["VIRT_UART",""]],"fn":[["device_init",""],["irq_handler",""]],"type":[["BlockDeviceImpl",""],["CharDeviceImpl",""]]}); \ No newline at end of file diff --git a/public/main/os/board/type.BlockDeviceImpl.html b/public/main/os/board/type.BlockDeviceImpl.html deleted file mode 100644 index 74020a45..00000000 --- a/public/main/os/board/type.BlockDeviceImpl.html +++ /dev/null @@ -1,6 +0,0 @@ -BlockDeviceImpl in os::board - Rust -
-

Type Definition os::board::BlockDeviceImpl

source · []
pub type BlockDeviceImpl = VirtIOBlock;
- \ No newline at end of file diff --git a/public/main/os/board/type.CharDeviceImpl.html b/public/main/os/board/type.CharDeviceImpl.html deleted file mode 100644 index 4014bed3..00000000 --- a/public/main/os/board/type.CharDeviceImpl.html +++ /dev/null @@ -1,6 +0,0 @@ -CharDeviceImpl in os::board - Rust -
-

Type Definition os::board::CharDeviceImpl

source · []
pub type CharDeviceImpl = NS16550a<VIRT_UART>;
- \ No newline at end of file diff --git a/public/main/os/config/constant.KERNEL_HEAP_SIZE.html b/public/main/os/config/constant.KERNEL_HEAP_SIZE.html deleted file mode 100644 index 37fbf1ef..00000000 --- a/public/main/os/config/constant.KERNEL_HEAP_SIZE.html +++ /dev/null @@ -1,6 +0,0 @@ -KERNEL_HEAP_SIZE in os::config - Rust -
pub const KERNEL_HEAP_SIZE: usize = 0x20_0000;
- \ No newline at end of file diff --git a/public/main/os/config/constant.KERNEL_STACK_SIZE.html b/public/main/os/config/constant.KERNEL_STACK_SIZE.html deleted file mode 100644 index 0870895a..00000000 --- a/public/main/os/config/constant.KERNEL_STACK_SIZE.html +++ /dev/null @@ -1,6 +0,0 @@ -KERNEL_STACK_SIZE in os::config - Rust -
pub const KERNEL_STACK_SIZE: usize = 4096 * 2; // 0x0000_0000_0000_2000usize
- \ No newline at end of file diff --git a/public/main/os/config/constant.MEMORY_END.html b/public/main/os/config/constant.MEMORY_END.html deleted file mode 100644 index 50a51128..00000000 --- a/public/main/os/config/constant.MEMORY_END.html +++ /dev/null @@ -1,6 +0,0 @@ -MEMORY_END in os::config - Rust -
-

Constant os::config::MEMORY_END

source · []
pub const MEMORY_END: usize = 0x80800000;
- \ No newline at end of file diff --git a/public/main/os/config/constant.PAGE_SIZE.html b/public/main/os/config/constant.PAGE_SIZE.html deleted file mode 100644 index 6a65de1f..00000000 --- a/public/main/os/config/constant.PAGE_SIZE.html +++ /dev/null @@ -1,6 +0,0 @@ -PAGE_SIZE in os::config - Rust -
-

Constant os::config::PAGE_SIZE

source · []
pub const PAGE_SIZE: usize = 0x1000;
- \ No newline at end of file diff --git a/public/main/os/config/constant.PAGE_SIZE_BITS.html b/public/main/os/config/constant.PAGE_SIZE_BITS.html deleted file mode 100644 index 5356ad2d..00000000 --- a/public/main/os/config/constant.PAGE_SIZE_BITS.html +++ /dev/null @@ -1,6 +0,0 @@ -PAGE_SIZE_BITS in os::config - Rust -
pub const PAGE_SIZE_BITS: usize = 0xc;
- \ No newline at end of file diff --git a/public/main/os/config/constant.TRAMPOLINE.html b/public/main/os/config/constant.TRAMPOLINE.html deleted file mode 100644 index 306d3252..00000000 --- a/public/main/os/config/constant.TRAMPOLINE.html +++ /dev/null @@ -1,6 +0,0 @@ -TRAMPOLINE in os::config - Rust -
-

Constant os::config::TRAMPOLINE

source · []
pub const TRAMPOLINE: usize = usize::MAX - PAGE_SIZE + 1; // 0xffff_ffff_ffff_f000usize
- \ No newline at end of file diff --git a/public/main/os/config/constant.TRAP_CONTEXT_BASE.html b/public/main/os/config/constant.TRAP_CONTEXT_BASE.html deleted file mode 100644 index a7375a83..00000000 --- a/public/main/os/config/constant.TRAP_CONTEXT_BASE.html +++ /dev/null @@ -1,6 +0,0 @@ -TRAP_CONTEXT_BASE in os::config - Rust -
pub const TRAP_CONTEXT_BASE: usize = TRAMPOLINE - PAGE_SIZE; // 0xffff_ffff_ffff_e000usize
- \ No newline at end of file diff --git a/public/main/os/config/constant.USER_STACK_SIZE.html b/public/main/os/config/constant.USER_STACK_SIZE.html deleted file mode 100644 index 7b13b4aa..00000000 --- a/public/main/os/config/constant.USER_STACK_SIZE.html +++ /dev/null @@ -1,6 +0,0 @@ -USER_STACK_SIZE in os::config - Rust -
pub const USER_STACK_SIZE: usize = 4096 * 2; // 0x0000_0000_0000_2000usize
- \ No newline at end of file diff --git a/public/main/os/config/index.html b/public/main/os/config/index.html deleted file mode 100644 index d16899fd..00000000 --- a/public/main/os/config/index.html +++ /dev/null @@ -1,8 +0,0 @@ -os::config - Rust -
- \ No newline at end of file diff --git a/public/main/os/config/sidebar-items.js b/public/main/os/config/sidebar-items.js deleted file mode 100644 index 82162e6c..00000000 --- a/public/main/os/config/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"constant":[["KERNEL_HEAP_SIZE",""],["KERNEL_STACK_SIZE",""],["MEMORY_END",""],["PAGE_SIZE",""],["PAGE_SIZE_BITS",""],["TRAMPOLINE",""],["TRAP_CONTEXT_BASE",""],["USER_STACK_SIZE",""]]}); \ No newline at end of file diff --git a/public/main/os/console/fn.print.html b/public/main/os/console/fn.print.html deleted file mode 100644 index 11eb46a6..00000000 --- a/public/main/os/console/fn.print.html +++ /dev/null @@ -1,6 +0,0 @@ -print in os::console - Rust -
-

Function os::console::print

source · []
pub fn print(args: Arguments<'_>)
- \ No newline at end of file diff --git a/public/main/os/console/index.html b/public/main/os/console/index.html deleted file mode 100644 index 20aa4929..00000000 --- a/public/main/os/console/index.html +++ /dev/null @@ -1,8 +0,0 @@ -os::console - Rust -
- \ No newline at end of file diff --git a/public/main/os/console/sidebar-items.js b/public/main/os/console/sidebar-items.js deleted file mode 100644 index 32906922..00000000 --- a/public/main/os/console/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["print",""]],"struct":[["Stdout",""]]}); \ No newline at end of file diff --git a/public/main/os/console/struct.Stdout.html b/public/main/os/console/struct.Stdout.html deleted file mode 100644 index aacab1d0..00000000 --- a/public/main/os/console/struct.Stdout.html +++ /dev/null @@ -1,19 +0,0 @@ -Stdout in os::console - Rust -
-

Struct os::console::Stdout

source · []
struct Stdout;

Trait Implementations

Writes a string slice into this writer, returning whether the write -succeeded. Read more

-

Writes a char into this writer, returning whether the write succeeded. Read more

-

Glue for usage of the write! macro with implementors of this trait. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-
- \ No newline at end of file diff --git a/public/main/os/drivers/block/fn.block_device_test.html b/public/main/os/drivers/block/fn.block_device_test.html deleted file mode 100644 index d5273e9f..00000000 --- a/public/main/os/drivers/block/fn.block_device_test.html +++ /dev/null @@ -1,6 +0,0 @@ -block_device_test in os::drivers::block - Rust -
pub fn block_device_test()
- \ No newline at end of file diff --git a/public/main/os/drivers/block/index.html b/public/main/os/drivers/block/index.html deleted file mode 100644 index 38d27642..00000000 --- a/public/main/os/drivers/block/index.html +++ /dev/null @@ -1,10 +0,0 @@ -os::drivers::block - Rust -
- \ No newline at end of file diff --git a/public/main/os/drivers/block/sdcard/constant.SD_CS.html b/public/main/os/drivers/block/sdcard/constant.SD_CS.html deleted file mode 100644 index 7745c03f..00000000 --- a/public/main/os/drivers/block/sdcard/constant.SD_CS.html +++ /dev/null @@ -1,10 +0,0 @@ -SD_CS in os::drivers::block::sdcard - Rust -
-

Constant os::drivers::block::sdcard::SD_CS

source · []
const SD_CS: u32 = 3;
Expand description

CS value passed to SPI controller, this is a dummy value as SPI0_CS3 is not mapping to anything

-
    -
  • in the FPIOA
  • -
-
- \ No newline at end of file diff --git a/public/main/os/drivers/block/sdcard/constant.SD_CS_GPIONUM.html b/public/main/os/drivers/block/sdcard/constant.SD_CS_GPIONUM.html deleted file mode 100644 index cb3d07b6..00000000 --- a/public/main/os/drivers/block/sdcard/constant.SD_CS_GPIONUM.html +++ /dev/null @@ -1,7 +0,0 @@ -SD_CS_GPIONUM in os::drivers::block::sdcard - Rust -
const SD_CS_GPIONUM: u8 = 7;
Expand description

GPIOHS GPIO number to use for controlling the SD card CS pin

-
- \ No newline at end of file diff --git a/public/main/os/drivers/block/sdcard/constant.SD_START_DATA_MULTIPLE_BLOCK_READ.html b/public/main/os/drivers/block/sdcard/constant.SD_START_DATA_MULTIPLE_BLOCK_READ.html deleted file mode 100644 index 2a05a15e..00000000 --- a/public/main/os/drivers/block/sdcard/constant.SD_START_DATA_MULTIPLE_BLOCK_READ.html +++ /dev/null @@ -1,7 +0,0 @@ -SD_START_DATA_MULTIPLE_BLOCK_READ in os::drivers::block::sdcard - Rust -
pub const SD_START_DATA_MULTIPLE_BLOCK_READ: u8 = 0xFE;
Expand description

Data token start byte, Start Multiple Block Read

-
- \ No newline at end of file diff --git a/public/main/os/drivers/block/sdcard/constant.SD_START_DATA_MULTIPLE_BLOCK_WRITE.html b/public/main/os/drivers/block/sdcard/constant.SD_START_DATA_MULTIPLE_BLOCK_WRITE.html deleted file mode 100644 index 3b76b968..00000000 --- a/public/main/os/drivers/block/sdcard/constant.SD_START_DATA_MULTIPLE_BLOCK_WRITE.html +++ /dev/null @@ -1,7 +0,0 @@ -SD_START_DATA_MULTIPLE_BLOCK_WRITE in os::drivers::block::sdcard - Rust -
pub const SD_START_DATA_MULTIPLE_BLOCK_WRITE: u8 = 0xFC;
Expand description

Data token start byte, Start Multiple Block Write

-
- \ No newline at end of file diff --git a/public/main/os/drivers/block/sdcard/constant.SD_START_DATA_SINGLE_BLOCK_READ.html b/public/main/os/drivers/block/sdcard/constant.SD_START_DATA_SINGLE_BLOCK_READ.html deleted file mode 100644 index 3ebef1e6..00000000 --- a/public/main/os/drivers/block/sdcard/constant.SD_START_DATA_SINGLE_BLOCK_READ.html +++ /dev/null @@ -1,7 +0,0 @@ -SD_START_DATA_SINGLE_BLOCK_READ in os::drivers::block::sdcard - Rust -
pub const SD_START_DATA_SINGLE_BLOCK_READ: u8 = 0xFE;
Expand description

Data token start byte, Start Single Block Read

-
- \ No newline at end of file diff --git a/public/main/os/drivers/block/sdcard/constant.SD_START_DATA_SINGLE_BLOCK_WRITE.html b/public/main/os/drivers/block/sdcard/constant.SD_START_DATA_SINGLE_BLOCK_WRITE.html deleted file mode 100644 index a760dd29..00000000 --- a/public/main/os/drivers/block/sdcard/constant.SD_START_DATA_SINGLE_BLOCK_WRITE.html +++ /dev/null @@ -1,7 +0,0 @@ -SD_START_DATA_SINGLE_BLOCK_WRITE in os::drivers::block::sdcard - Rust -
pub const SD_START_DATA_SINGLE_BLOCK_WRITE: u8 = 0xFE;
Expand description

Data token start byte, Start Single Block Write

-
- \ No newline at end of file diff --git a/public/main/os/drivers/block/sdcard/constant.SEC_LEN.html b/public/main/os/drivers/block/sdcard/constant.SEC_LEN.html deleted file mode 100644 index 8afb9c1d..00000000 --- a/public/main/os/drivers/block/sdcard/constant.SEC_LEN.html +++ /dev/null @@ -1,6 +0,0 @@ -SEC_LEN in os::drivers::block::sdcard - Rust -
pub const SEC_LEN: usize = 512;
- \ No newline at end of file diff --git a/public/main/os/drivers/block/sdcard/enum.CMD.html b/public/main/os/drivers/block/sdcard/enum.CMD.html deleted file mode 100644 index 192ad23c..00000000 --- a/public/main/os/drivers/block/sdcard/enum.CMD.html +++ /dev/null @@ -1,57 +0,0 @@ -CMD in os::drivers::block::sdcard - Rust -
#[repr(u8)]
-pub enum CMD {
-
Show 15 variants CMD0, - CMD8, - CMD9, - CMD10, - CMD12, - CMD16, - CMD17, - CMD18, - ACMD23, - CMD24, - CMD25, - ACMD41, - CMD55, - CMD58, - CMD59, -
}
Expand description

SD commands

-

Variants

CMD0

Software reset

-

CMD8

Check voltage range (SDC V2)

-

CMD9

Read CSD register

-

CMD10

Read CID register

-

CMD12

Stop to read data

-

CMD16

Change R/W block size

-

CMD17

Read block

-

CMD18

Read multiple blocks

-

ACMD23

Number of blocks to erase (SDC)

-

CMD24

Write a block

-

CMD25

Write multiple blocks

-

ACMD41

Initiate initialization process (SDC)

-

CMD55

Leading command for ACMD*

-

CMD58

Read OCR

-

CMD59

Enable/disable CRC check

-

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

This method tests for self and other values to be equal, and is used -by ==. Read more

-

This method tests for !=.

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Performs the conversion.

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-
- \ No newline at end of file diff --git a/public/main/os/drivers/block/sdcard/enum.InitError.html b/public/main/os/drivers/block/sdcard/enum.InitError.html deleted file mode 100644 index fb02d6df..00000000 --- a/public/main/os/drivers/block/sdcard/enum.InitError.html +++ /dev/null @@ -1,25 +0,0 @@ -InitError in os::drivers::block::sdcard - Rust -
pub enum InitError {
-    CMDFailed(CMDu8),
-    CardCapacityStatusNotSet([u8; 4]),
-    CannotGetCardInfo,
-}

Variants

CMDFailed(CMDu8)

CardCapacityStatusNotSet([u8; 4])

CannotGetCardInfo

Trait Implementations

Returns a copy of the value. Read more

-

Performs copy-assignment from source. Read more

-

Formats the value using the given formatter. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

-

Immutably borrows from an owned value. Read more

-

Mutably borrows from an owned value. Read more

-

Performs the conversion.

-

Performs the conversion.

-

The resulting type after obtaining ownership.

-

Creates owned data from borrowed data, usually by cloning. Read more

-
🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-

The type returned in the event of a conversion error.

-

Performs the conversion.

-
- \ No newline at end of file diff --git a/public/main/os/drivers/block/sdcard/fn.init_sdcard.html b/public/main/os/drivers/block/sdcard/fn.init_sdcard.html deleted file mode 100644 index e2370784..00000000 --- a/public/main/os/drivers/block/sdcard/fn.init_sdcard.html +++ /dev/null @@ -1,6 +0,0 @@ -init_sdcard in os::drivers::block::sdcard - Rust -
fn init_sdcard() -> SDCard<SPIImpl<SPI0>>
- \ No newline at end of file diff --git a/public/main/os/drivers/block/sdcard/fn.io_init.html b/public/main/os/drivers/block/sdcard/fn.io_init.html deleted file mode 100644 index 90bf0d50..00000000 --- a/public/main/os/drivers/block/sdcard/fn.io_init.html +++ /dev/null @@ -1,7 +0,0 @@ -io_init in os::drivers::block::sdcard - Rust -
fn io_init()
Expand description

Connect pins to internal functions

-
- \ No newline at end of file diff --git a/public/main/os/drivers/block/sdcard/index.html b/public/main/os/drivers/block/sdcard/index.html deleted file mode 100644 index fab0fed7..00000000 --- a/public/main/os/drivers/block/sdcard/index.html +++ /dev/null @@ -1,27 +0,0 @@ -os::drivers::block::sdcard - Rust -

Structs

-

-

  • Card Identification Data: CID Register
  • -

    -

    -

  • Card Specific Data: CSD Register
  • -

    -

    -

  • Card information
  • -

    -

    Enums

    -

    SD commands

    -

    Constants

    -

    CS value passed to SPI controller, this is a dummy value as SPI0_CS3 is not mapping to anything

    -

    GPIOHS GPIO number to use for controlling the SD card CS pin

    -

    Data token start byte, Start Multiple Block Read

    -

    Data token start byte, Start Multiple Block Write

    -

    Data token start byte, Start Single Block Read

    -

    Data token start byte, Start Single Block Write

    -

    Functions

    -

    Connect pins to internal functions

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/block/sdcard/sidebar-items.js b/public/main/os/drivers/block/sdcard/sidebar-items.js deleted file mode 100644 index 793a4709..00000000 --- a/public/main/os/drivers/block/sdcard/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"constant":[["SD_CS","CS value passed to SPI controller, this is a dummy value as SPI0_CS3 is not mapping to anything"],["SD_CS_GPIONUM","GPIOHS GPIO number to use for controlling the SD card CS pin "],["SD_START_DATA_MULTIPLE_BLOCK_READ","Data token start byte, Start Multiple Block Read "],["SD_START_DATA_MULTIPLE_BLOCK_WRITE","Data token start byte, Start Multiple Block Write "],["SD_START_DATA_SINGLE_BLOCK_READ","Data token start byte, Start Single Block Read "],["SD_START_DATA_SINGLE_BLOCK_WRITE","Data token start byte, Start Single Block Write "],["SEC_LEN",""]],"enum":[["CMD","SD commands "],["InitError",""]],"fn":[["init_sdcard",""],["io_init","Connect pins to internal functions "]],"struct":[["PERIPHERALS",""],["SDCard",""],["SDCardCID","Card Identification Data: CID Register"],["SDCardCSD","Card Specific Data: CSD Register"],["SDCardInfo","Card information"],["SDCardWrapper",""]]}); \ No newline at end of file diff --git a/public/main/os/drivers/block/sdcard/struct.PERIPHERALS.html b/public/main/os/drivers/block/sdcard/struct.PERIPHERALS.html deleted file mode 100644 index b18568ad..00000000 --- a/public/main/os/drivers/block/sdcard/struct.PERIPHERALS.html +++ /dev/null @@ -1,20 +0,0 @@ -PERIPHERALS in os::drivers::block::sdcard - Rust -
    struct PERIPHERALS {
    -    __private_field: (),
    -}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPIntrFreeCell<Peripherals>>

    Panic if the data has been borrowed.

    -

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/block/sdcard/struct.SDCard.html b/public/main/os/drivers/block/sdcard/struct.SDCard.html deleted file mode 100644 index 53415fce..00000000 --- a/public/main/os/drivers/block/sdcard/struct.SDCard.html +++ /dev/null @@ -1,19 +0,0 @@ -SDCard in os::drivers::block::sdcard - Rust -
    pub struct SDCard<SPI> {
    -    spi: SPI,
    -    spi_cs: u32,
    -    cs_gpionum: u8,
    -}

    Fields

    spi: SPIspi_cs: u32cs_gpionum: u8

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/block/sdcard/struct.SDCardCID.html b/public/main/os/drivers/block/sdcard/struct.SDCardCID.html deleted file mode 100644 index 2db6395b..00000000 --- a/public/main/os/drivers/block/sdcard/struct.SDCardCID.html +++ /dev/null @@ -1,35 +0,0 @@ -SDCardCID in os::drivers::block::sdcard - Rust -
    pub struct SDCardCID {
    -    pub ManufacturerID: u8,
    -    pub OEM_AppliID: u16,
    -    pub ProdName1: u32,
    -    pub ProdName2: u8,
    -    pub ProdRev: u8,
    -    pub ProdSN: u32,
    -    pub Reserved1: u8,
    -    pub ManufactDate: u16,
    -    pub CID_CRC: u8,
    -    pub Reserved2: u8,
    -}
    Expand description
      -
    • Card Identification Data: CID Register
    • -
    -

    Fields

    ManufacturerID: u8OEM_AppliID: u16ProdName1: u32ProdName2: u8ProdRev: u8ProdSN: u32Reserved1: u8ManufactDate: u16CID_CRC: u8Reserved2: u8

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/block/sdcard/struct.SDCardCSD.html b/public/main/os/drivers/block/sdcard/struct.SDCardCSD.html deleted file mode 100644 index 36d14247..00000000 --- a/public/main/os/drivers/block/sdcard/struct.SDCardCSD.html +++ /dev/null @@ -1,57 +0,0 @@ -SDCardCSD in os::drivers::block::sdcard - Rust -
    pub struct SDCardCSD {
    Show 32 fields - pub CSDStruct: u8, - pub SysSpecVersion: u8, - pub Reserved1: u8, - pub TAAC: u8, - pub NSAC: u8, - pub MaxBusClkFrec: u8, - pub CardComdClasses: u16, - pub RdBlockLen: u8, - pub PartBlockRead: u8, - pub WrBlockMisalign: u8, - pub RdBlockMisalign: u8, - pub DSRImpl: u8, - pub Reserved2: u8, - pub DeviceSize: u32, - pub EraseGrSize: u8, - pub EraseGrMul: u8, - pub WrProtectGrSize: u8, - pub WrProtectGrEnable: u8, - pub ManDeflECC: u8, - pub WrSpeedFact: u8, - pub MaxWrBlockLen: u8, - pub WriteBlockPaPartial: u8, - pub Reserved3: u8, - pub ContentProtectAppli: u8, - pub FileFormatGroup: u8, - pub CopyFlag: u8, - pub PermWrProtect: u8, - pub TempWrProtect: u8, - pub FileFormat: u8, - pub ECC: u8, - pub CSD_CRC: u8, - pub Reserved4: u8, -
    }
    Expand description
      -
    • Card Specific Data: CSD Register
    • -
    -

    Fields

    CSDStruct: u8SysSpecVersion: u8Reserved1: u8TAAC: u8NSAC: u8MaxBusClkFrec: u8CardComdClasses: u16RdBlockLen: u8PartBlockRead: u8WrBlockMisalign: u8RdBlockMisalign: u8DSRImpl: u8Reserved2: u8DeviceSize: u32EraseGrSize: u8EraseGrMul: u8WrProtectGrSize: u8WrProtectGrEnable: u8ManDeflECC: u8WrSpeedFact: u8MaxWrBlockLen: u8WriteBlockPaPartial: u8Reserved3: u8ContentProtectAppli: u8FileFormatGroup: u8CopyFlag: u8PermWrProtect: u8TempWrProtect: u8FileFormat: u8ECC: u8CSD_CRC: u8Reserved4: u8

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/block/sdcard/struct.SDCardInfo.html b/public/main/os/drivers/block/sdcard/struct.SDCardInfo.html deleted file mode 100644 index c6004a71..00000000 --- a/public/main/os/drivers/block/sdcard/struct.SDCardInfo.html +++ /dev/null @@ -1,29 +0,0 @@ -SDCardInfo in os::drivers::block::sdcard - Rust -
    pub struct SDCardInfo {
    -    pub SD_csd: SDCardCSD,
    -    pub SD_cid: SDCardCID,
    -    pub CardCapacity: u64,
    -    pub CardBlockSize: u64,
    -}
    Expand description
      -
    • Card information
    • -
    -

    Fields

    SD_csd: SDCardCSDSD_cid: SDCardCIDCardCapacity: u64CardBlockSize: u64

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/block/sdcard/struct.SDCardWrapper.html b/public/main/os/drivers/block/sdcard/struct.SDCardWrapper.html deleted file mode 100644 index 53d8baf0..00000000 --- a/public/main/os/drivers/block/sdcard/struct.SDCardWrapper.html +++ /dev/null @@ -1,15 +0,0 @@ -SDCardWrapper in os::drivers::block::sdcard - Rust -
    pub struct SDCardWrapper(UPIntrFreeCell<SDCard<SPIImpl<SPI0>>>);

    Tuple Fields

    0: UPIntrFreeCell<SDCard<SPIImpl<SPI0>>>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/block/sidebar-items.js b/public/main/os/drivers/block/sidebar-items.js deleted file mode 100644 index 11ff3e4d..00000000 --- a/public/main/os/drivers/block/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["block_device_test",""]],"mod":[["sdcard",""],["virtio_blk",""]],"struct":[["BLOCK_DEVICE",""]]}); \ No newline at end of file diff --git a/public/main/os/drivers/block/struct.BLOCK_DEVICE.html b/public/main/os/drivers/block/struct.BLOCK_DEVICE.html deleted file mode 100644 index 14fce12c..00000000 --- a/public/main/os/drivers/block/struct.BLOCK_DEVICE.html +++ /dev/null @@ -1,19 +0,0 @@ -BLOCK_DEVICE in os::drivers::block - Rust -
    pub struct BLOCK_DEVICE {
    -    __private_field: (),
    -}

    Fields

    __private_field: ()

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/block/virtio_blk/constant.VIRTIO0.html b/public/main/os/drivers/block/virtio_blk/constant.VIRTIO0.html deleted file mode 100644 index 6247ce49..00000000 --- a/public/main/os/drivers/block/virtio_blk/constant.VIRTIO0.html +++ /dev/null @@ -1,6 +0,0 @@ -VIRTIO0 in os::drivers::block::virtio_blk - Rust -
    const VIRTIO0: usize = 0x10001000;
    - \ No newline at end of file diff --git a/public/main/os/drivers/block/virtio_blk/fn.virtio_dma_alloc.html b/public/main/os/drivers/block/virtio_blk/fn.virtio_dma_alloc.html deleted file mode 100644 index 4ad011d5..00000000 --- a/public/main/os/drivers/block/virtio_blk/fn.virtio_dma_alloc.html +++ /dev/null @@ -1,7 +0,0 @@ -virtio_dma_alloc in os::drivers::block::virtio_blk - Rust -
    #[no_mangle]
    -pub extern "C" fn virtio_dma_alloc(pages: usize) -> PhysAddr
    - \ No newline at end of file diff --git a/public/main/os/drivers/block/virtio_blk/fn.virtio_dma_dealloc.html b/public/main/os/drivers/block/virtio_blk/fn.virtio_dma_dealloc.html deleted file mode 100644 index ce86101e..00000000 --- a/public/main/os/drivers/block/virtio_blk/fn.virtio_dma_dealloc.html +++ /dev/null @@ -1,7 +0,0 @@ -virtio_dma_dealloc in os::drivers::block::virtio_blk - Rust -
    #[no_mangle]
    -pub extern "C" fn virtio_dma_dealloc(
        pa: PhysAddr,
        pages: usize
    ) -> i32
    - \ No newline at end of file diff --git a/public/main/os/drivers/block/virtio_blk/fn.virtio_phys_to_virt.html b/public/main/os/drivers/block/virtio_blk/fn.virtio_phys_to_virt.html deleted file mode 100644 index 16a6b413..00000000 --- a/public/main/os/drivers/block/virtio_blk/fn.virtio_phys_to_virt.html +++ /dev/null @@ -1,7 +0,0 @@ -virtio_phys_to_virt in os::drivers::block::virtio_blk - Rust -
    #[no_mangle]
    -pub extern "C" fn virtio_phys_to_virt(paddr: PhysAddr) -> VirtAddr
    - \ No newline at end of file diff --git a/public/main/os/drivers/block/virtio_blk/fn.virtio_virt_to_phys.html b/public/main/os/drivers/block/virtio_blk/fn.virtio_virt_to_phys.html deleted file mode 100644 index c29876d6..00000000 --- a/public/main/os/drivers/block/virtio_blk/fn.virtio_virt_to_phys.html +++ /dev/null @@ -1,7 +0,0 @@ -virtio_virt_to_phys in os::drivers::block::virtio_blk - Rust -
    #[no_mangle]
    -pub extern "C" fn virtio_virt_to_phys(vaddr: VirtAddr) -> PhysAddr
    - \ No newline at end of file diff --git a/public/main/os/drivers/block/virtio_blk/index.html b/public/main/os/drivers/block/virtio_blk/index.html deleted file mode 100644 index 9457b6c2..00000000 --- a/public/main/os/drivers/block/virtio_blk/index.html +++ /dev/null @@ -1,9 +0,0 @@ -os::drivers::block::virtio_blk - Rust -
    - \ No newline at end of file diff --git a/public/main/os/drivers/block/virtio_blk/sidebar-items.js b/public/main/os/drivers/block/virtio_blk/sidebar-items.js deleted file mode 100644 index 06229704..00000000 --- a/public/main/os/drivers/block/virtio_blk/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"constant":[["VIRTIO0",""]],"fn":[["virtio_dma_alloc",""],["virtio_dma_dealloc",""],["virtio_phys_to_virt",""],["virtio_virt_to_phys",""]],"struct":[["QUEUE_FRAMES",""],["VirtIOBlock",""]]}); \ No newline at end of file diff --git a/public/main/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html b/public/main/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html deleted file mode 100644 index b9fe397d..00000000 --- a/public/main/os/drivers/block/virtio_blk/struct.QUEUE_FRAMES.html +++ /dev/null @@ -1,20 +0,0 @@ -QUEUE_FRAMES in os::drivers::block::virtio_blk - Rust -
    struct QUEUE_FRAMES {
    -    __private_field: (),
    -}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPIntrFreeCell<Vec<FrameTracker>>>

    Panic if the data has been borrowed.

    -

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/block/virtio_blk/struct.VirtIOBlock.html b/public/main/os/drivers/block/virtio_blk/struct.VirtIOBlock.html deleted file mode 100644 index 895bcdf3..00000000 --- a/public/main/os/drivers/block/virtio_blk/struct.VirtIOBlock.html +++ /dev/null @@ -1,18 +0,0 @@ -VirtIOBlock in os::drivers::block::virtio_blk - Rust -
    pub struct VirtIOBlock {
    -    virtio_blk: UPIntrFreeCell<VirtIOBlk<'static>>,
    -    condvars: BTreeMap<u16, Condvar>,
    -}

    Fields

    virtio_blk: UPIntrFreeCell<VirtIOBlk<'static>>condvars: BTreeMap<u16, Condvar>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/chardev/index.html b/public/main/os/drivers/chardev/index.html deleted file mode 100644 index 2ca36478..00000000 --- a/public/main/os/drivers/chardev/index.html +++ /dev/null @@ -1,10 +0,0 @@ -os::drivers::chardev - Rust -
    - \ No newline at end of file diff --git a/public/main/os/drivers/chardev/ns16550a/index.html b/public/main/os/drivers/chardev/ns16550a/index.html deleted file mode 100644 index b25fb58d..00000000 --- a/public/main/os/drivers/chardev/ns16550a/index.html +++ /dev/null @@ -1,10 +0,0 @@ -os::drivers::chardev::ns16550a - Rust -

    Structs

    -

    InterruptEnableRegister

    -

    LineStatusRegister

    -

    Model Control Register

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/chardev/ns16550a/sidebar-items.js b/public/main/os/drivers/chardev/ns16550a/sidebar-items.js deleted file mode 100644 index ba696843..00000000 --- a/public/main/os/drivers/chardev/ns16550a/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"struct":[["IER","InterruptEnableRegister"],["LSR","LineStatusRegister"],["MCR","Model Control Register"],["NS16550a",""],["NS16550aInner",""],["NS16550aRaw",""],["ReadWithoutDLAB",""],["WriteWithoutDLAB",""]]}); \ No newline at end of file diff --git a/public/main/os/drivers/chardev/ns16550a/struct.IER.html b/public/main/os/drivers/chardev/ns16550a/struct.IER.html deleted file mode 100644 index a983e4d0..00000000 --- a/public/main/os/drivers/chardev/ns16550a/struct.IER.html +++ /dev/null @@ -1,120 +0,0 @@ -IER in os::drivers::chardev::ns16550a - Rust -
    pub struct IER {
    -    bits: u8,
    -}
    Expand description

    InterruptEnableRegister

    -

    Fields

    bits: u8

    Implementations

    Returns an empty set of flags.

    -

    Returns the set containing all flags.

    -

    Returns the raw value of the flags currently stored.

    -

    Convert from underlying bit representation, unless that -representation contains bits that do not correspond to a flag.

    -

    Convert from underlying bit representation, dropping any bits -that do not correspond to flags.

    -

    Convert from underlying bit representation, preserving all -bits (even those not corresponding to a defined flag).

    -
    Safety
    -

    The caller of the bitflags! macro can chose to allow or -disallow extra bits for their bitflags type.

    -

    The caller of from_bits_unchecked() has to ensure that -all bits correspond to a defined flag or that extra bits -are valid for this bitflags type.

    -

    Returns true if no flags are currently stored.

    -

    Returns true if all flags are currently set.

    -

    Returns true if there are flags common to both self and other.

    -

    Returns true if all of the flags in other are contained within self.

    -

    Inserts the specified flags in-place.

    -

    Removes the specified flags in-place.

    -

    Toggles the specified flags in-place.

    -

    Inserts or removes the specified flags depending on the passed value.

    -

    Returns the intersection between the flags in self and -other.

    -

    Specifically, the returned set contains only the flags which are -present in both self and other.

    -

    This is equivalent to using the & operator (e.g. -ops::BitAnd), as in flags & other.

    -

    Returns the union of between the flags in self and other.

    -

    Specifically, the returned set contains all flags which are -present in either self or other, including any which are -present in both (see Self::symmetric_difference if that -is undesirable).

    -

    This is equivalent to using the | operator (e.g. -ops::BitOr), as in flags | other.

    -

    Returns the difference between the flags in self and other.

    -

    Specifically, the returned set contains all flags present in -self, except for the ones present in other.

    -

    It is also conceptually equivalent to the “bit-clear” operation: -flags & !other (and this syntax is also supported).

    -

    This is equivalent to using the - operator (e.g. -ops::Sub), as in flags - other.

    -

    Returns the symmetric difference between the flags -in self and other.

    -

    Specifically, the returned set contains the flags present which -are present in self or other, but that are not present in -both. Equivalently, it contains the flags present in exactly -one of the sets self and other.

    -

    This is equivalent to using the ^ operator (e.g. -ops::BitXor), as in flags ^ other.

    -

    Returns the complement of this set of flags.

    -

    Specifically, the returned set contains all the flags which are -not set in self, but which are allowed for this type.

    -

    Alternatively, it can be thought of as the set difference -between Self::all() and self (e.g. Self::all() - self)

    -

    This is equivalent to using the ! operator (e.g. -ops::Not), as in !flags.

    -

    Trait Implementations

    Formats the value using the given formatter.

    -

    Returns the intersection between the two sets of flags.

    -

    The resulting type after applying the & operator.

    -

    Disables all flags disabled in the set.

    -

    Returns the union of the two sets of flags.

    -

    The resulting type after applying the | operator.

    -

    Adds the set of flags.

    -

    Returns the left flags, but with all the right flags toggled.

    -

    The resulting type after applying the ^ operator.

    -

    Toggles the set of flags.

    -

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Extends a collection with the contents of an iterator. Read more

    -
    🔬 This is a nightly-only experimental API. (extend_one)

    Extends a collection with exactly one element.

    -
    🔬 This is a nightly-only experimental API. (extend_one)

    Reserves capacity in a collection for the given number of additional elements. Read more

    -

    Creates a value from an iterator. Read more

    -

    Feeds this value into the given Hasher. Read more

    -

    Feeds a slice of this type into the given Hasher. Read more

    -

    Formats the value using the given formatter.

    -

    Returns the complement of this set of flags.

    -

    The resulting type after applying the ! operator.

    -

    Formats the value using the given formatter.

    -

    This method returns an Ordering between self and other. Read more

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

    This method tests for self and other values to be equal, and is used -by ==. Read more

    -

    This method tests for !=.

    -

    This method returns an ordering between self and other values if one exists. Read more

    -

    This method tests less than (for self and other) and is used by the < operator. Read more

    -

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more

    -

    This method tests greater than (for self and other) and is used by the > operator. Read more

    -

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    -

    Returns the set difference of the two sets of flags.

    -

    The resulting type after applying the - operator.

    -

    Disables all flags enabled in the set.

    -

    Formats the value using the given formatter.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/chardev/ns16550a/struct.LSR.html b/public/main/os/drivers/chardev/ns16550a/struct.LSR.html deleted file mode 100644 index 814c861a..00000000 --- a/public/main/os/drivers/chardev/ns16550a/struct.LSR.html +++ /dev/null @@ -1,120 +0,0 @@ -LSR in os::drivers::chardev::ns16550a - Rust -
    pub struct LSR {
    -    bits: u8,
    -}
    Expand description

    LineStatusRegister

    -

    Fields

    bits: u8

    Implementations

    Returns an empty set of flags.

    -

    Returns the set containing all flags.

    -

    Returns the raw value of the flags currently stored.

    -

    Convert from underlying bit representation, unless that -representation contains bits that do not correspond to a flag.

    -

    Convert from underlying bit representation, dropping any bits -that do not correspond to flags.

    -

    Convert from underlying bit representation, preserving all -bits (even those not corresponding to a defined flag).

    -
    Safety
    -

    The caller of the bitflags! macro can chose to allow or -disallow extra bits for their bitflags type.

    -

    The caller of from_bits_unchecked() has to ensure that -all bits correspond to a defined flag or that extra bits -are valid for this bitflags type.

    -

    Returns true if no flags are currently stored.

    -

    Returns true if all flags are currently set.

    -

    Returns true if there are flags common to both self and other.

    -

    Returns true if all of the flags in other are contained within self.

    -

    Inserts the specified flags in-place.

    -

    Removes the specified flags in-place.

    -

    Toggles the specified flags in-place.

    -

    Inserts or removes the specified flags depending on the passed value.

    -

    Returns the intersection between the flags in self and -other.

    -

    Specifically, the returned set contains only the flags which are -present in both self and other.

    -

    This is equivalent to using the & operator (e.g. -ops::BitAnd), as in flags & other.

    -

    Returns the union of between the flags in self and other.

    -

    Specifically, the returned set contains all flags which are -present in either self or other, including any which are -present in both (see Self::symmetric_difference if that -is undesirable).

    -

    This is equivalent to using the | operator (e.g. -ops::BitOr), as in flags | other.

    -

    Returns the difference between the flags in self and other.

    -

    Specifically, the returned set contains all flags present in -self, except for the ones present in other.

    -

    It is also conceptually equivalent to the “bit-clear” operation: -flags & !other (and this syntax is also supported).

    -

    This is equivalent to using the - operator (e.g. -ops::Sub), as in flags - other.

    -

    Returns the symmetric difference between the flags -in self and other.

    -

    Specifically, the returned set contains the flags present which -are present in self or other, but that are not present in -both. Equivalently, it contains the flags present in exactly -one of the sets self and other.

    -

    This is equivalent to using the ^ operator (e.g. -ops::BitXor), as in flags ^ other.

    -

    Returns the complement of this set of flags.

    -

    Specifically, the returned set contains all the flags which are -not set in self, but which are allowed for this type.

    -

    Alternatively, it can be thought of as the set difference -between Self::all() and self (e.g. Self::all() - self)

    -

    This is equivalent to using the ! operator (e.g. -ops::Not), as in !flags.

    -

    Trait Implementations

    Formats the value using the given formatter.

    -

    Returns the intersection between the two sets of flags.

    -

    The resulting type after applying the & operator.

    -

    Disables all flags disabled in the set.

    -

    Returns the union of the two sets of flags.

    -

    The resulting type after applying the | operator.

    -

    Adds the set of flags.

    -

    Returns the left flags, but with all the right flags toggled.

    -

    The resulting type after applying the ^ operator.

    -

    Toggles the set of flags.

    -

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Extends a collection with the contents of an iterator. Read more

    -
    🔬 This is a nightly-only experimental API. (extend_one)

    Extends a collection with exactly one element.

    -
    🔬 This is a nightly-only experimental API. (extend_one)

    Reserves capacity in a collection for the given number of additional elements. Read more

    -

    Creates a value from an iterator. Read more

    -

    Feeds this value into the given Hasher. Read more

    -

    Feeds a slice of this type into the given Hasher. Read more

    -

    Formats the value using the given formatter.

    -

    Returns the complement of this set of flags.

    -

    The resulting type after applying the ! operator.

    -

    Formats the value using the given formatter.

    -

    This method returns an Ordering between self and other. Read more

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

    This method tests for self and other values to be equal, and is used -by ==. Read more

    -

    This method tests for !=.

    -

    This method returns an ordering between self and other values if one exists. Read more

    -

    This method tests less than (for self and other) and is used by the < operator. Read more

    -

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more

    -

    This method tests greater than (for self and other) and is used by the > operator. Read more

    -

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    -

    Returns the set difference of the two sets of flags.

    -

    The resulting type after applying the - operator.

    -

    Disables all flags enabled in the set.

    -

    Formats the value using the given formatter.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/chardev/ns16550a/struct.MCR.html b/public/main/os/drivers/chardev/ns16550a/struct.MCR.html deleted file mode 100644 index 752a2a19..00000000 --- a/public/main/os/drivers/chardev/ns16550a/struct.MCR.html +++ /dev/null @@ -1,120 +0,0 @@ -MCR in os::drivers::chardev::ns16550a - Rust -
    pub struct MCR {
    -    bits: u8,
    -}
    Expand description

    Model Control Register

    -

    Fields

    bits: u8

    Implementations

    Returns an empty set of flags.

    -

    Returns the set containing all flags.

    -

    Returns the raw value of the flags currently stored.

    -

    Convert from underlying bit representation, unless that -representation contains bits that do not correspond to a flag.

    -

    Convert from underlying bit representation, dropping any bits -that do not correspond to flags.

    -

    Convert from underlying bit representation, preserving all -bits (even those not corresponding to a defined flag).

    -
    Safety
    -

    The caller of the bitflags! macro can chose to allow or -disallow extra bits for their bitflags type.

    -

    The caller of from_bits_unchecked() has to ensure that -all bits correspond to a defined flag or that extra bits -are valid for this bitflags type.

    -

    Returns true if no flags are currently stored.

    -

    Returns true if all flags are currently set.

    -

    Returns true if there are flags common to both self and other.

    -

    Returns true if all of the flags in other are contained within self.

    -

    Inserts the specified flags in-place.

    -

    Removes the specified flags in-place.

    -

    Toggles the specified flags in-place.

    -

    Inserts or removes the specified flags depending on the passed value.

    -

    Returns the intersection between the flags in self and -other.

    -

    Specifically, the returned set contains only the flags which are -present in both self and other.

    -

    This is equivalent to using the & operator (e.g. -ops::BitAnd), as in flags & other.

    -

    Returns the union of between the flags in self and other.

    -

    Specifically, the returned set contains all flags which are -present in either self or other, including any which are -present in both (see Self::symmetric_difference if that -is undesirable).

    -

    This is equivalent to using the | operator (e.g. -ops::BitOr), as in flags | other.

    -

    Returns the difference between the flags in self and other.

    -

    Specifically, the returned set contains all flags present in -self, except for the ones present in other.

    -

    It is also conceptually equivalent to the “bit-clear” operation: -flags & !other (and this syntax is also supported).

    -

    This is equivalent to using the - operator (e.g. -ops::Sub), as in flags - other.

    -

    Returns the symmetric difference between the flags -in self and other.

    -

    Specifically, the returned set contains the flags present which -are present in self or other, but that are not present in -both. Equivalently, it contains the flags present in exactly -one of the sets self and other.

    -

    This is equivalent to using the ^ operator (e.g. -ops::BitXor), as in flags ^ other.

    -

    Returns the complement of this set of flags.

    -

    Specifically, the returned set contains all the flags which are -not set in self, but which are allowed for this type.

    -

    Alternatively, it can be thought of as the set difference -between Self::all() and self (e.g. Self::all() - self)

    -

    This is equivalent to using the ! operator (e.g. -ops::Not), as in !flags.

    -

    Trait Implementations

    Formats the value using the given formatter.

    -

    Returns the intersection between the two sets of flags.

    -

    The resulting type after applying the & operator.

    -

    Disables all flags disabled in the set.

    -

    Returns the union of the two sets of flags.

    -

    The resulting type after applying the | operator.

    -

    Adds the set of flags.

    -

    Returns the left flags, but with all the right flags toggled.

    -

    The resulting type after applying the ^ operator.

    -

    Toggles the set of flags.

    -

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Extends a collection with the contents of an iterator. Read more

    -
    🔬 This is a nightly-only experimental API. (extend_one)

    Extends a collection with exactly one element.

    -
    🔬 This is a nightly-only experimental API. (extend_one)

    Reserves capacity in a collection for the given number of additional elements. Read more

    -

    Creates a value from an iterator. Read more

    -

    Feeds this value into the given Hasher. Read more

    -

    Feeds a slice of this type into the given Hasher. Read more

    -

    Formats the value using the given formatter.

    -

    Returns the complement of this set of flags.

    -

    The resulting type after applying the ! operator.

    -

    Formats the value using the given formatter.

    -

    This method returns an Ordering between self and other. Read more

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

    This method tests for self and other values to be equal, and is used -by ==. Read more

    -

    This method tests for !=.

    -

    This method returns an ordering between self and other values if one exists. Read more

    -

    This method tests less than (for self and other) and is used by the < operator. Read more

    -

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more

    -

    This method tests greater than (for self and other) and is used by the > operator. Read more

    -

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    -

    Returns the set difference of the two sets of flags.

    -

    The resulting type after applying the - operator.

    -

    Disables all flags enabled in the set.

    -

    Formats the value using the given formatter.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/chardev/ns16550a/struct.NS16550a.html b/public/main/os/drivers/chardev/ns16550a/struct.NS16550a.html deleted file mode 100644 index b5297a0a..00000000 --- a/public/main/os/drivers/chardev/ns16550a/struct.NS16550a.html +++ /dev/null @@ -1,18 +0,0 @@ -NS16550a in os::drivers::chardev::ns16550a - Rust -
    pub struct NS16550a<const BASE_ADDR: usize> {
    -    inner: UPIntrFreeCell<NS16550aInner>,
    -    condvar: Condvar,
    -}

    Fields

    inner: UPIntrFreeCell<NS16550aInner>condvar: Condvar

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/chardev/ns16550a/struct.NS16550aInner.html b/public/main/os/drivers/chardev/ns16550a/struct.NS16550aInner.html deleted file mode 100644 index 6ee2f418..00000000 --- a/public/main/os/drivers/chardev/ns16550a/struct.NS16550aInner.html +++ /dev/null @@ -1,18 +0,0 @@ -NS16550aInner in os::drivers::chardev::ns16550a - Rust -
    struct NS16550aInner {
    -    ns16550a: NS16550aRaw,
    -    read_buffer: VecDeque<u8>,
    -}

    Fields

    ns16550a: NS16550aRawread_buffer: VecDeque<u8>

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/chardev/ns16550a/struct.NS16550aRaw.html b/public/main/os/drivers/chardev/ns16550a/struct.NS16550aRaw.html deleted file mode 100644 index 4c3ad1d7..00000000 --- a/public/main/os/drivers/chardev/ns16550a/struct.NS16550aRaw.html +++ /dev/null @@ -1,17 +0,0 @@ -NS16550aRaw in os::drivers::chardev::ns16550a - Rust -
    pub struct NS16550aRaw {
    -    base_addr: usize,
    -}

    Fields

    base_addr: usize

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/chardev/ns16550a/struct.ReadWithoutDLAB.html b/public/main/os/drivers/chardev/ns16550a/struct.ReadWithoutDLAB.html deleted file mode 100644 index a6c55c34..00000000 --- a/public/main/os/drivers/chardev/ns16550a/struct.ReadWithoutDLAB.html +++ /dev/null @@ -1,32 +0,0 @@ -ReadWithoutDLAB in os::drivers::chardev::ns16550a - Rust -
    #[repr(C)]
    struct ReadWithoutDLAB { - pub rbr: ReadOnly<u8>, - pub ier: Volatile<IER>, - pub iir: ReadOnly<u8>, - pub lcr: Volatile<u8>, - pub mcr: Volatile<MCR>, - pub lsr: ReadOnly<LSR>, - _padding1: ReadOnly<u8>, - _padding2: ReadOnly<u8>, -}

    Fields

    rbr: ReadOnly<u8>

    receiver buffer register

    -
    ier: Volatile<IER>

    interrupt enable register

    -
    iir: ReadOnly<u8>

    interrupt identification register

    -
    lcr: Volatile<u8>

    line control register

    -
    mcr: Volatile<MCR>

    model control register

    -
    lsr: ReadOnly<LSR>

    line status register

    -
    _padding1: ReadOnly<u8>

    ignore MSR

    -
    _padding2: ReadOnly<u8>

    ignore SCR

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/chardev/ns16550a/struct.WriteWithoutDLAB.html b/public/main/os/drivers/chardev/ns16550a/struct.WriteWithoutDLAB.html deleted file mode 100644 index 339bea30..00000000 --- a/public/main/os/drivers/chardev/ns16550a/struct.WriteWithoutDLAB.html +++ /dev/null @@ -1,30 +0,0 @@ -WriteWithoutDLAB in os::drivers::chardev::ns16550a - Rust -
    #[repr(C)]
    struct WriteWithoutDLAB { - pub thr: WriteOnly<u8>, - pub ier: Volatile<IER>, - _padding0: ReadOnly<u8>, - pub lcr: Volatile<u8>, - pub mcr: Volatile<MCR>, - pub lsr: ReadOnly<LSR>, - _padding1: ReadOnly<u16>, -}

    Fields

    thr: WriteOnly<u8>

    transmitter holding register

    -
    ier: Volatile<IER>

    interrupt enable register

    -
    _padding0: ReadOnly<u8>

    ignore FCR

    -
    lcr: Volatile<u8>

    line control register

    -
    mcr: Volatile<MCR>

    modem control register

    -
    lsr: ReadOnly<LSR>

    line status register

    -
    _padding1: ReadOnly<u16>

    ignore other registers

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/chardev/sidebar-items.js b/public/main/os/drivers/chardev/sidebar-items.js deleted file mode 100644 index 8b19d02e..00000000 --- a/public/main/os/drivers/chardev/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"mod":[["ns16550a",""]],"struct":[["UART",""]],"trait":[["CharDevice",""]]}); \ No newline at end of file diff --git a/public/main/os/drivers/chardev/struct.UART.html b/public/main/os/drivers/chardev/struct.UART.html deleted file mode 100644 index 1bb75419..00000000 --- a/public/main/os/drivers/chardev/struct.UART.html +++ /dev/null @@ -1,19 +0,0 @@ -UART in os::drivers::chardev - Rust -
    pub struct UART {
    -    __private_field: (),
    -}

    Fields

    __private_field: ()

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/chardev/trait.CharDevice.html b/public/main/os/drivers/chardev/trait.CharDevice.html deleted file mode 100644 index bb9f6150..00000000 --- a/public/main/os/drivers/chardev/trait.CharDevice.html +++ /dev/null @@ -1,10 +0,0 @@ -CharDevice in os::drivers::chardev - Rust -
    pub trait CharDevice {
    -    fn read(&self) -> u8;
    -
    fn write(&self, ch: u8); -
    fn handle_irq(&self); -}

    Required methods

    Implementors

    - \ No newline at end of file diff --git a/public/main/os/drivers/index.html b/public/main/os/drivers/index.html deleted file mode 100644 index 23b95870..00000000 --- a/public/main/os/drivers/index.html +++ /dev/null @@ -1,8 +0,0 @@ -os::drivers - Rust -
    -

    Module os::drivers

    source · []

    Re-exports

    -
    pub use block::BLOCK_DEVICE;
    pub use block::BLOCK_DEVICE;
    pub use chardev::UART;
    pub use chardev::UART;

    Modules

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/plic/enum.IntrTargetPriority.html b/public/main/os/drivers/plic/enum.IntrTargetPriority.html deleted file mode 100644 index 019f01b6..00000000 --- a/public/main/os/drivers/plic/enum.IntrTargetPriority.html +++ /dev/null @@ -1,23 +0,0 @@ -IntrTargetPriority in os::drivers::plic - Rust -
    pub enum IntrTargetPriority {
    -    Machine,
    -    Supervisor,
    -}

    Variants

    Machine

    Supervisor

    Implementations

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/plic/index.html b/public/main/os/drivers/plic/index.html deleted file mode 100644 index 4a9481fa..00000000 --- a/public/main/os/drivers/plic/index.html +++ /dev/null @@ -1,8 +0,0 @@ -os::drivers::plic - Rust -
    - \ No newline at end of file diff --git a/public/main/os/drivers/plic/sidebar-items.js b/public/main/os/drivers/plic/sidebar-items.js deleted file mode 100644 index 8d3772c7..00000000 --- a/public/main/os/drivers/plic/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"enum":[["IntrTargetPriority",""]],"struct":[["PLIC",""]]}); \ No newline at end of file diff --git a/public/main/os/drivers/plic/struct.PLIC.html b/public/main/os/drivers/plic/struct.PLIC.html deleted file mode 100644 index 55a61609..00000000 --- a/public/main/os/drivers/plic/struct.PLIC.html +++ /dev/null @@ -1,17 +0,0 @@ -PLIC in os::drivers::plic - Rust -
    -

    Struct os::drivers::plic::PLIC

    source · []
    pub struct PLIC {
    -    base_addr: usize,
    -}

    Fields

    base_addr: usize

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/drivers/sidebar-items.js b/public/main/os/drivers/sidebar-items.js deleted file mode 100644 index f8f3f7d7..00000000 --- a/public/main/os/drivers/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"mod":[["block",""],["chardev",""],["plic",""]]}); \ No newline at end of file diff --git a/public/main/os/fn.clear_bss.html b/public/main/os/fn.clear_bss.html deleted file mode 100644 index 0c85206d..00000000 --- a/public/main/os/fn.clear_bss.html +++ /dev/null @@ -1,6 +0,0 @@ -clear_bss in os - Rust -
    -

    Function os::clear_bss

    source · []
    pub(crate) fn clear_bss()
    - \ No newline at end of file diff --git a/public/main/os/fn.rust_main.html b/public/main/os/fn.rust_main.html deleted file mode 100644 index 96cde110..00000000 --- a/public/main/os/fn.rust_main.html +++ /dev/null @@ -1,7 +0,0 @@ -rust_main in os - Rust -
    -

    Function os::rust_main

    source · []
    #[no_mangle]
    -pub fn rust_main() -> !
    - \ No newline at end of file diff --git a/public/main/os/fs/index.html b/public/main/os/fs/index.html deleted file mode 100644 index 8fb7e062..00000000 --- a/public/main/os/fs/index.html +++ /dev/null @@ -1,9 +0,0 @@ -os::fs - Rust -
    -

    Module os::fs

    source · []

    Re-exports

    -
    pub use inode::list_apps;
    pub use inode::open_file;
    pub use inode::OSInode;
    pub use inode::OpenFlags;
    pub use pipe::make_pipe;
    pub use pipe::Pipe;
    pub use stdio::Stdin;
    pub use stdio::Stdout;

    Modules

    -

    Traits

    -
    - \ No newline at end of file diff --git a/public/main/os/fs/inode/fn.list_apps.html b/public/main/os/fs/inode/fn.list_apps.html deleted file mode 100644 index a461c96f..00000000 --- a/public/main/os/fs/inode/fn.list_apps.html +++ /dev/null @@ -1,6 +0,0 @@ -list_apps in os::fs::inode - Rust -
    -

    Function os::fs::inode::list_apps

    source · []
    pub fn list_apps()
    - \ No newline at end of file diff --git a/public/main/os/fs/inode/fn.open_file.html b/public/main/os/fs/inode/fn.open_file.html deleted file mode 100644 index d7f883a7..00000000 --- a/public/main/os/fs/inode/fn.open_file.html +++ /dev/null @@ -1,6 +0,0 @@ -open_file in os::fs::inode - Rust -
    -

    Function os::fs::inode::open_file

    source · []
    pub fn open_file(name: &str, flags: OpenFlags) -> Option<Arc<OSInode>>
    - \ No newline at end of file diff --git a/public/main/os/fs/inode/index.html b/public/main/os/fs/inode/index.html deleted file mode 100644 index 37e325f8..00000000 --- a/public/main/os/fs/inode/index.html +++ /dev/null @@ -1,8 +0,0 @@ -os::fs::inode - Rust -
    - \ No newline at end of file diff --git a/public/main/os/fs/inode/sidebar-items.js b/public/main/os/fs/inode/sidebar-items.js deleted file mode 100644 index 6b53705a..00000000 --- a/public/main/os/fs/inode/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["list_apps",""],["open_file",""]],"struct":[["OSInode",""],["OSInodeInner",""],["OpenFlags",""],["ROOT_INODE",""]]}); \ No newline at end of file diff --git a/public/main/os/fs/inode/struct.OSInode.html b/public/main/os/fs/inode/struct.OSInode.html deleted file mode 100644 index fd5e9f7d..00000000 --- a/public/main/os/fs/inode/struct.OSInode.html +++ /dev/null @@ -1,19 +0,0 @@ -OSInode in os::fs::inode - Rust -
    -

    Struct os::fs::inode::OSInode

    source · []
    pub struct OSInode {
    -    readable: bool,
    -    writable: bool,
    -    inner: UPIntrFreeCell<OSInodeInner>,
    -}

    Fields

    readable: boolwritable: boolinner: UPIntrFreeCell<OSInodeInner>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/fs/inode/struct.OSInodeInner.html b/public/main/os/fs/inode/struct.OSInodeInner.html deleted file mode 100644 index 1d39bc94..00000000 --- a/public/main/os/fs/inode/struct.OSInodeInner.html +++ /dev/null @@ -1,18 +0,0 @@ -OSInodeInner in os::fs::inode - Rust -
    pub struct OSInodeInner {
    -    offset: usize,
    -    inode: Arc<Inode>,
    -}

    Fields

    offset: usizeinode: Arc<Inode>

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/fs/inode/struct.OpenFlags.html b/public/main/os/fs/inode/struct.OpenFlags.html deleted file mode 100644 index 44a23a72..00000000 --- a/public/main/os/fs/inode/struct.OpenFlags.html +++ /dev/null @@ -1,121 +0,0 @@ -OpenFlags in os::fs::inode - Rust -
    -

    Struct os::fs::inode::OpenFlags

    source · []
    pub struct OpenFlags {
    -    bits: u32,
    -}

    Fields

    bits: u32

    Implementations

    Returns an empty set of flags.

    -

    Returns the set containing all flags.

    -

    Returns the raw value of the flags currently stored.

    -

    Convert from underlying bit representation, unless that -representation contains bits that do not correspond to a flag.

    -

    Convert from underlying bit representation, dropping any bits -that do not correspond to flags.

    -

    Convert from underlying bit representation, preserving all -bits (even those not corresponding to a defined flag).

    -
    Safety
    -

    The caller of the bitflags! macro can chose to allow or -disallow extra bits for their bitflags type.

    -

    The caller of from_bits_unchecked() has to ensure that -all bits correspond to a defined flag or that extra bits -are valid for this bitflags type.

    -

    Returns true if no flags are currently stored.

    -

    Returns true if all flags are currently set.

    -

    Returns true if there are flags common to both self and other.

    -

    Returns true if all of the flags in other are contained within self.

    -

    Inserts the specified flags in-place.

    -

    Removes the specified flags in-place.

    -

    Toggles the specified flags in-place.

    -

    Inserts or removes the specified flags depending on the passed value.

    -

    Returns the intersection between the flags in self and -other.

    -

    Specifically, the returned set contains only the flags which are -present in both self and other.

    -

    This is equivalent to using the & operator (e.g. -ops::BitAnd), as in flags & other.

    -

    Returns the union of between the flags in self and other.

    -

    Specifically, the returned set contains all flags which are -present in either self or other, including any which are -present in both (see Self::symmetric_difference if that -is undesirable).

    -

    This is equivalent to using the | operator (e.g. -ops::BitOr), as in flags | other.

    -

    Returns the difference between the flags in self and other.

    -

    Specifically, the returned set contains all flags present in -self, except for the ones present in other.

    -

    It is also conceptually equivalent to the “bit-clear” operation: -flags & !other (and this syntax is also supported).

    -

    This is equivalent to using the - operator (e.g. -ops::Sub), as in flags - other.

    -

    Returns the symmetric difference between the flags -in self and other.

    -

    Specifically, the returned set contains the flags present which -are present in self or other, but that are not present in -both. Equivalently, it contains the flags present in exactly -one of the sets self and other.

    -

    This is equivalent to using the ^ operator (e.g. -ops::BitXor), as in flags ^ other.

    -

    Returns the complement of this set of flags.

    -

    Specifically, the returned set contains all the flags which are -not set in self, but which are allowed for this type.

    -

    Alternatively, it can be thought of as the set difference -between Self::all() and self (e.g. Self::all() - self)

    -

    This is equivalent to using the ! operator (e.g. -ops::Not), as in !flags.

    -

    Do not check validity for simplicity -Return (readable, writable)

    -

    Trait Implementations

    Formats the value using the given formatter.

    -

    Returns the intersection between the two sets of flags.

    -

    The resulting type after applying the & operator.

    -

    Disables all flags disabled in the set.

    -

    Returns the union of the two sets of flags.

    -

    The resulting type after applying the | operator.

    -

    Adds the set of flags.

    -

    Returns the left flags, but with all the right flags toggled.

    -

    The resulting type after applying the ^ operator.

    -

    Toggles the set of flags.

    -

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Extends a collection with the contents of an iterator. Read more

    -
    🔬 This is a nightly-only experimental API. (extend_one)

    Extends a collection with exactly one element.

    -
    🔬 This is a nightly-only experimental API. (extend_one)

    Reserves capacity in a collection for the given number of additional elements. Read more

    -

    Creates a value from an iterator. Read more

    -

    Feeds this value into the given Hasher. Read more

    -

    Feeds a slice of this type into the given Hasher. Read more

    -

    Formats the value using the given formatter.

    -

    Returns the complement of this set of flags.

    -

    The resulting type after applying the ! operator.

    -

    Formats the value using the given formatter.

    -

    This method returns an Ordering between self and other. Read more

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

    This method tests for self and other values to be equal, and is used -by ==. Read more

    -

    This method tests for !=.

    -

    This method returns an ordering between self and other values if one exists. Read more

    -

    This method tests less than (for self and other) and is used by the < operator. Read more

    -

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more

    -

    This method tests greater than (for self and other) and is used by the > operator. Read more

    -

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    -

    Returns the set difference of the two sets of flags.

    -

    The resulting type after applying the - operator.

    -

    Disables all flags enabled in the set.

    -

    Formats the value using the given formatter.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/fs/inode/struct.ROOT_INODE.html b/public/main/os/fs/inode/struct.ROOT_INODE.html deleted file mode 100644 index 8569472f..00000000 --- a/public/main/os/fs/inode/struct.ROOT_INODE.html +++ /dev/null @@ -1,19 +0,0 @@ -ROOT_INODE in os::fs::inode - Rust -
    -

    Struct os::fs::inode::ROOT_INODE

    source · []
    pub struct ROOT_INODE {
    -    __private_field: (),
    -}

    Fields

    __private_field: ()

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/fs/pipe/constant.RING_BUFFER_SIZE.html b/public/main/os/fs/pipe/constant.RING_BUFFER_SIZE.html deleted file mode 100644 index 9300f28c..00000000 --- a/public/main/os/fs/pipe/constant.RING_BUFFER_SIZE.html +++ /dev/null @@ -1,6 +0,0 @@ -RING_BUFFER_SIZE in os::fs::pipe - Rust -
    const RING_BUFFER_SIZE: usize = 32;
    - \ No newline at end of file diff --git a/public/main/os/fs/pipe/enum.RingBufferStatus.html b/public/main/os/fs/pipe/enum.RingBufferStatus.html deleted file mode 100644 index 93b37d92..00000000 --- a/public/main/os/fs/pipe/enum.RingBufferStatus.html +++ /dev/null @@ -1,27 +0,0 @@ -RingBufferStatus in os::fs::pipe - Rust -
    enum RingBufferStatus {
    -    Full,
    -    Empty,
    -    Normal,
    -}

    Variants

    Full

    Empty

    Normal

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    This method tests for self and other values to be equal, and is used -by ==. Read more

    -

    This method tests for !=.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/fs/pipe/fn.make_pipe.html b/public/main/os/fs/pipe/fn.make_pipe.html deleted file mode 100644 index b74a8220..00000000 --- a/public/main/os/fs/pipe/fn.make_pipe.html +++ /dev/null @@ -1,7 +0,0 @@ -make_pipe in os::fs::pipe - Rust -
    -

    Function os::fs::pipe::make_pipe

    source · []
    pub fn make_pipe() -> (Arc<Pipe>, Arc<Pipe>)
    Expand description

    Return (read_end, write_end)

    -
    - \ No newline at end of file diff --git a/public/main/os/fs/pipe/index.html b/public/main/os/fs/pipe/index.html deleted file mode 100644 index 0bd647c3..00000000 --- a/public/main/os/fs/pipe/index.html +++ /dev/null @@ -1,11 +0,0 @@ -os::fs::pipe - Rust -
    - \ No newline at end of file diff --git a/public/main/os/fs/pipe/sidebar-items.js b/public/main/os/fs/pipe/sidebar-items.js deleted file mode 100644 index 9c0d7ebc..00000000 --- a/public/main/os/fs/pipe/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"constant":[["RING_BUFFER_SIZE",""]],"enum":[["RingBufferStatus",""]],"fn":[["make_pipe","Return (read_end, write_end)"]],"struct":[["Pipe",""],["PipeRingBuffer",""]]}); \ No newline at end of file diff --git a/public/main/os/fs/pipe/struct.Pipe.html b/public/main/os/fs/pipe/struct.Pipe.html deleted file mode 100644 index cb98bd20..00000000 --- a/public/main/os/fs/pipe/struct.Pipe.html +++ /dev/null @@ -1,19 +0,0 @@ -Pipe in os::fs::pipe - Rust -
    -

    Struct os::fs::pipe::Pipe

    source · []
    pub struct Pipe {
    -    readable: bool,
    -    writable: bool,
    -    buffer: Arc<UPIntrFreeCell<PipeRingBuffer>>,
    -}

    Fields

    readable: boolwritable: boolbuffer: Arc<UPIntrFreeCell<PipeRingBuffer>>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/fs/pipe/struct.PipeRingBuffer.html b/public/main/os/fs/pipe/struct.PipeRingBuffer.html deleted file mode 100644 index 2aa49c2f..00000000 --- a/public/main/os/fs/pipe/struct.PipeRingBuffer.html +++ /dev/null @@ -1,21 +0,0 @@ -PipeRingBuffer in os::fs::pipe - Rust -
    pub struct PipeRingBuffer {
    -    arr: [u8; 32],
    -    head: usize,
    -    tail: usize,
    -    status: RingBufferStatus,
    -    write_end: Option<Weak<Pipe>>,
    -}

    Fields

    arr: [u8; 32]head: usizetail: usizestatus: RingBufferStatuswrite_end: Option<Weak<Pipe>>

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/fs/sidebar-items.js b/public/main/os/fs/sidebar-items.js deleted file mode 100644 index 835c949e..00000000 --- a/public/main/os/fs/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"mod":[["inode",""],["pipe",""],["stdio",""]],"trait":[["File",""]]}); \ No newline at end of file diff --git a/public/main/os/fs/stdio/index.html b/public/main/os/fs/stdio/index.html deleted file mode 100644 index 56bfdc0e..00000000 --- a/public/main/os/fs/stdio/index.html +++ /dev/null @@ -1,7 +0,0 @@ -os::fs::stdio - Rust -
    - \ No newline at end of file diff --git a/public/main/os/fs/stdio/sidebar-items.js b/public/main/os/fs/stdio/sidebar-items.js deleted file mode 100644 index 9dbb449f..00000000 --- a/public/main/os/fs/stdio/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"struct":[["Stdin",""],["Stdout",""]]}); \ No newline at end of file diff --git a/public/main/os/fs/stdio/struct.Stdin.html b/public/main/os/fs/stdio/struct.Stdin.html deleted file mode 100644 index 105fbb1b..00000000 --- a/public/main/os/fs/stdio/struct.Stdin.html +++ /dev/null @@ -1,15 +0,0 @@ -Stdin in os::fs::stdio - Rust -
    -

    Struct os::fs::stdio::Stdin

    source · []
    pub struct Stdin;

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/fs/stdio/struct.Stdout.html b/public/main/os/fs/stdio/struct.Stdout.html deleted file mode 100644 index 7c0e10b8..00000000 --- a/public/main/os/fs/stdio/struct.Stdout.html +++ /dev/null @@ -1,15 +0,0 @@ -Stdout in os::fs::stdio - Rust -
    -

    Struct os::fs::stdio::Stdout

    source · []
    pub struct Stdout;

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/fs/trait.File.html b/public/main/os/fs/trait.File.html deleted file mode 100644 index a28316e4..00000000 --- a/public/main/os/fs/trait.File.html +++ /dev/null @@ -1,11 +0,0 @@ -File in os::fs - Rust -
    -

    Trait os::fs::File

    source · []
    pub trait File: Send + Sync {
    -    fn readable(&self) -> bool;
    -
    fn writable(&self) -> bool; -
    fn read(&self, buf: UserBuffer) -> usize; -
    fn write(&self, buf: UserBuffer) -> usize; -}

    Required methods

    Implementors

    - \ No newline at end of file diff --git a/public/main/os/index.html b/public/main/os/index.html deleted file mode 100644 index 414e1f15..00000000 --- a/public/main/os/index.html +++ /dev/null @@ -1,10 +0,0 @@ -os - Rust -
    - \ No newline at end of file diff --git a/public/main/os/lang_items/fn.backtrace.html b/public/main/os/lang_items/fn.backtrace.html deleted file mode 100644 index 39864fc1..00000000 --- a/public/main/os/lang_items/fn.backtrace.html +++ /dev/null @@ -1,6 +0,0 @@ -backtrace in os::lang_items - Rust -
    unsafe fn backtrace()
    - \ No newline at end of file diff --git a/public/main/os/lang_items/fn.panic.html b/public/main/os/lang_items/fn.panic.html deleted file mode 100644 index 70a8c97f..00000000 --- a/public/main/os/lang_items/fn.panic.html +++ /dev/null @@ -1,6 +0,0 @@ -panic in os::lang_items - Rust -
    -

    Function os::lang_items::panic

    source · []
    fn panic(info: &PanicInfo<'_>) -> !
    - \ No newline at end of file diff --git a/public/main/os/lang_items/index.html b/public/main/os/lang_items/index.html deleted file mode 100644 index 47387d15..00000000 --- a/public/main/os/lang_items/index.html +++ /dev/null @@ -1,7 +0,0 @@ -os::lang_items - Rust -
    - \ No newline at end of file diff --git a/public/main/os/lang_items/sidebar-items.js b/public/main/os/lang_items/sidebar-items.js deleted file mode 100644 index 02ef59cf..00000000 --- a/public/main/os/lang_items/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["backtrace",""],["panic",""]]}); \ No newline at end of file diff --git a/public/main/os/macro.print!.html b/public/main/os/macro.print!.html deleted file mode 100644 index 0d57e6ea..00000000 --- a/public/main/os/macro.print!.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to macro.print.html...

    - - - \ No newline at end of file diff --git a/public/main/os/macro.print.html b/public/main/os/macro.print.html deleted file mode 100644 index 17d519f7..00000000 --- a/public/main/os/macro.print.html +++ /dev/null @@ -1,9 +0,0 @@ -print in os - Rust -
    -

    Macro os::print

    source · []
    macro_rules! print {
    -    ($fmt: literal $(, $($arg: tt)+)?) => { ... };
    -}
    -
    - \ No newline at end of file diff --git a/public/main/os/macro.println!.html b/public/main/os/macro.println!.html deleted file mode 100644 index 268c2ae6..00000000 --- a/public/main/os/macro.println!.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Redirection - - -

    Redirecting to macro.println.html...

    - - - \ No newline at end of file diff --git a/public/main/os/macro.println.html b/public/main/os/macro.println.html deleted file mode 100644 index 6f58012d..00000000 --- a/public/main/os/macro.println.html +++ /dev/null @@ -1,9 +0,0 @@ -println in os - Rust -
    -

    Macro os::println

    source · []
    macro_rules! println {
    -    ($fmt: literal $(, $($arg: tt)+)?) => { ... };
    -}
    -
    - \ No newline at end of file diff --git a/public/main/os/mm/address/constant.PA_WIDTH_SV39.html b/public/main/os/mm/address/constant.PA_WIDTH_SV39.html deleted file mode 100644 index d7ded0db..00000000 --- a/public/main/os/mm/address/constant.PA_WIDTH_SV39.html +++ /dev/null @@ -1,6 +0,0 @@ -PA_WIDTH_SV39 in os::mm::address - Rust -
    const PA_WIDTH_SV39: usize = 56;
    - \ No newline at end of file diff --git a/public/main/os/mm/address/constant.PPN_WIDTH_SV39.html b/public/main/os/mm/address/constant.PPN_WIDTH_SV39.html deleted file mode 100644 index 07bf60dc..00000000 --- a/public/main/os/mm/address/constant.PPN_WIDTH_SV39.html +++ /dev/null @@ -1,6 +0,0 @@ -PPN_WIDTH_SV39 in os::mm::address - Rust -
    const PPN_WIDTH_SV39: usize = PA_WIDTH_SV39 - PAGE_SIZE_BITS; // 0x0000_0000_0000_002cusize
    - \ No newline at end of file diff --git a/public/main/os/mm/address/constant.VA_WIDTH_SV39.html b/public/main/os/mm/address/constant.VA_WIDTH_SV39.html deleted file mode 100644 index 1f0e06d1..00000000 --- a/public/main/os/mm/address/constant.VA_WIDTH_SV39.html +++ /dev/null @@ -1,6 +0,0 @@ -VA_WIDTH_SV39 in os::mm::address - Rust -
    const VA_WIDTH_SV39: usize = 39;
    - \ No newline at end of file diff --git a/public/main/os/mm/address/constant.VPN_WIDTH_SV39.html b/public/main/os/mm/address/constant.VPN_WIDTH_SV39.html deleted file mode 100644 index 124aa845..00000000 --- a/public/main/os/mm/address/constant.VPN_WIDTH_SV39.html +++ /dev/null @@ -1,6 +0,0 @@ -VPN_WIDTH_SV39 in os::mm::address - Rust -
    const VPN_WIDTH_SV39: usize = VA_WIDTH_SV39 - PAGE_SIZE_BITS; // 0x0000_0000_0000_001busize
    - \ No newline at end of file diff --git a/public/main/os/mm/address/index.html b/public/main/os/mm/address/index.html deleted file mode 100644 index cf1a589b..00000000 --- a/public/main/os/mm/address/index.html +++ /dev/null @@ -1,11 +0,0 @@ -os::mm::address - Rust -
    - \ No newline at end of file diff --git a/public/main/os/mm/address/sidebar-items.js b/public/main/os/mm/address/sidebar-items.js deleted file mode 100644 index 354c1cc1..00000000 --- a/public/main/os/mm/address/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"constant":[["PA_WIDTH_SV39",""],["PPN_WIDTH_SV39",""],["VA_WIDTH_SV39",""],["VPN_WIDTH_SV39",""]],"struct":[["PhysAddr","Definitions"],["PhysPageNum",""],["SimpleRange",""],["SimpleRangeIterator",""],["VirtAddr",""],["VirtPageNum",""]],"trait":[["StepByOne",""]],"type":[["VPNRange",""]]}); \ No newline at end of file diff --git a/public/main/os/mm/address/struct.PhysAddr.html b/public/main/os/mm/address/struct.PhysAddr.html deleted file mode 100644 index dd88701f..00000000 --- a/public/main/os/mm/address/struct.PhysAddr.html +++ /dev/null @@ -1,43 +0,0 @@ -PhysAddr in os::mm::address - Rust -
    -

    Struct os::mm::address::PhysAddr

    source · []
    #[repr(C)]
    pub struct PhysAddr(pub usize);
    Expand description

    Definitions

    -

    Tuple Fields

    0: usize

    Implementations

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    T: {PhysAddr, VirtAddr, PhysPageNum, VirtPageNum} -T -> usize: T.0 -usize -> T: usize.into()

    -

    Performs the conversion.

    -

    This method returns an Ordering between self and other. Read more

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

    This method tests for self and other values to be equal, and is used -by ==. Read more

    -

    This method tests for !=.

    -

    This method returns an ordering between self and other values if one exists. Read more

    -

    This method tests less than (for self and other) and is used by the < operator. Read more

    -

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more

    -

    This method tests greater than (for self and other) and is used by the > operator. Read more

    -

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/address/struct.PhysPageNum.html b/public/main/os/mm/address/struct.PhysPageNum.html deleted file mode 100644 index b8b8d1ee..00000000 --- a/public/main/os/mm/address/struct.PhysPageNum.html +++ /dev/null @@ -1,39 +0,0 @@ -PhysPageNum in os::mm::address - Rust -
    #[repr(C)]
    pub struct PhysPageNum(pub usize);

    Tuple Fields

    0: usize

    Implementations

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    This method returns an Ordering between self and other. Read more

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

    This method tests for self and other values to be equal, and is used -by ==. Read more

    -

    This method tests for !=.

    -

    This method returns an ordering between self and other values if one exists. Read more

    -

    This method tests less than (for self and other) and is used by the < operator. Read more

    -

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more

    -

    This method tests greater than (for self and other) and is used by the > operator. Read more

    -

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/address/struct.SimpleRange.html b/public/main/os/mm/address/struct.SimpleRange.html deleted file mode 100644 index 163d0da6..00000000 --- a/public/main/os/mm/address/struct.SimpleRange.html +++ /dev/null @@ -1,26 +0,0 @@ -SimpleRange in os::mm::address - Rust -
    pub struct SimpleRange<T> where
        T: StepByOne + Copy + PartialEq + PartialOrd + Debug
    { - l: T, - r: T, -}

    Fields

    l: Tr: T

    Implementations

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    The type of the elements being iterated over.

    -

    Which kind of iterator are we turning this into?

    -

    Creates an iterator from a value. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/address/struct.SimpleRangeIterator.html b/public/main/os/mm/address/struct.SimpleRangeIterator.html deleted file mode 100644 index 988ccfa1..00000000 --- a/public/main/os/mm/address/struct.SimpleRangeIterator.html +++ /dev/null @@ -1,130 +0,0 @@ -SimpleRangeIterator in os::mm::address - Rust -
    pub struct SimpleRangeIterator<T> where
        T: StepByOne + Copy + PartialEq + PartialOrd + Debug
    { - current: T, - end: T, -}

    Fields

    current: Tend: T

    Implementations

    Trait Implementations

    The type of the elements being iterated over.

    -

    Advances the iterator and returns the next value. Read more

    -

    Returns the bounds on the remaining length of the iterator. Read more

    -

    Consumes the iterator, counting the number of iterations and returning it. Read more

    -

    Consumes the iterator, returning the last element. Read more

    -
    🔬 This is a nightly-only experimental API. (iter_advance_by)

    Advances the iterator by n elements. Read more

    -

    Returns the nth element of the iterator. Read more

    -

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more

    -

    Takes two iterators and creates a new iterator over both in sequence. Read more

    -

    ‘Zips up’ two iterators into a single iterator of pairs. Read more

    -
    🔬 This is a nightly-only experimental API. (iter_intersperse)

    Creates a new iterator which places a copy of separator between adjacent -items of the original iterator. Read more

    -
    🔬 This is a nightly-only experimental API. (iter_intersperse)

    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more

    -

    Takes a closure and creates an iterator which calls that closure on each -element. Read more

    -

    Calls a closure on each element of an iterator. Read more

    -

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more

    -

    Creates an iterator that both filters and maps. Read more

    -

    Creates an iterator which gives the current iteration count as well as -the next value. Read more

    -

    Creates an iterator which can use the peek and peek_mut methods -to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more

    -

    Creates an iterator that skips elements based on a predicate. Read more

    -

    Creates an iterator that yields elements based on a predicate. Read more

    -

    Creates an iterator that both yields elements based on a predicate and maps. Read more

    -

    Creates an iterator that skips the first n elements. Read more

    -

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more

    -

    An iterator adapter similar to fold that holds internal state and -produces a new iterator. Read more

    -

    Creates an iterator that works like map, but flattens nested structure. Read more

    -

    Creates an iterator that flattens nested structure. Read more

    -

    Creates an iterator which ends after the first None. Read more

    -

    Does something with each element of an iterator, passing the value on. Read more

    -

    Borrows an iterator, rather than consuming it. Read more

    -

    Transforms an iterator into a collection. Read more

    -

    Consumes an iterator, creating two collections from it. Read more

    -
    🔬 This is a nightly-only experimental API. (iter_partition_in_place)

    Reorders the elements of this iterator in-place according to the given predicate, -such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more

    -
    🔬 This is a nightly-only experimental API. (iter_is_partitioned)

    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more

    -

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more

    -

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more

    -

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more

    -

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more

    -
    🔬 This is a nightly-only experimental API. (iterator_try_reduce)

    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more

    -

    Tests if every element of the iterator matches a predicate. Read more

    -

    Tests if any element of the iterator matches a predicate. Read more

    -

    Searches for an element of an iterator that satisfies a predicate. Read more

    -

    Applies function to the elements of iterator and returns -the first non-none result. Read more

    -
    🔬 This is a nightly-only experimental API. (try_find)

    Applies function to the elements of iterator and returns -the first true result or the first error. Read more

    -

    Searches for an element in an iterator, returning its index. Read more

    -

    Searches for an element in an iterator from the right, returning its -index. Read more

    -

    Returns the maximum element of an iterator. Read more

    -

    Returns the minimum element of an iterator. Read more

    -

    Returns the element that gives the maximum value from the -specified function. Read more

    -

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more

    -

    Returns the element that gives the minimum value from the -specified function. Read more

    -

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more

    -

    Reverses an iterator’s direction. Read more

    -

    Converts an iterator of pairs into a pair of containers. Read more

    -

    Creates an iterator which copies all of its elements. Read more

    -

    Creates an iterator which clones all of its elements. Read more

    -

    Repeats an iterator endlessly. Read more

    -

    Sums the elements of an iterator. Read more

    -

    Iterates over the entire iterator, multiplying all the elements Read more

    -

    Lexicographically compares the elements of this Iterator with those -of another. Read more

    -
    🔬 This is a nightly-only experimental API. (iter_order_by)

    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more

    -

    Lexicographically compares the elements of this Iterator with those -of another. Read more

    -
    🔬 This is a nightly-only experimental API. (iter_order_by)

    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more

    -

    Determines if the elements of this Iterator are equal to those of -another. Read more

    -
    🔬 This is a nightly-only experimental API. (iter_order_by)

    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more

    -

    Determines if the elements of this Iterator are unequal to those of -another. Read more

    -

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more

    -

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more

    -

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more

    -

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more

    -
    🔬 This is a nightly-only experimental API. (is_sorted)

    Checks if the elements of this iterator are sorted. Read more

    -
    🔬 This is a nightly-only experimental API. (is_sorted)

    Checks if the elements of this iterator are sorted using the given comparator function. Read more

    -
    🔬 This is a nightly-only experimental API. (is_sorted)

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type of the elements being iterated over.

    -

    Which kind of iterator are we turning this into?

    -

    Creates an iterator from a value. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/address/struct.VirtAddr.html b/public/main/os/mm/address/struct.VirtAddr.html deleted file mode 100644 index fff94adf..00000000 --- a/public/main/os/mm/address/struct.VirtAddr.html +++ /dev/null @@ -1,40 +0,0 @@ -VirtAddr in os::mm::address - Rust -
    -

    Struct os::mm::address::VirtAddr

    source · []
    #[repr(C)]
    pub struct VirtAddr(pub usize);

    Tuple Fields

    0: usize

    Implementations

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Debugging

    -

    Formats the value using the given formatter. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    This method returns an Ordering between self and other. Read more

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

    This method tests for self and other values to be equal, and is used -by ==. Read more

    -

    This method tests for !=.

    -

    This method returns an ordering between self and other values if one exists. Read more

    -

    This method tests less than (for self and other) and is used by the < operator. Read more

    -

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more

    -

    This method tests greater than (for self and other) and is used by the > operator. Read more

    -

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/address/struct.VirtPageNum.html b/public/main/os/mm/address/struct.VirtPageNum.html deleted file mode 100644 index 7f222ee9..00000000 --- a/public/main/os/mm/address/struct.VirtPageNum.html +++ /dev/null @@ -1,39 +0,0 @@ -VirtPageNum in os::mm::address - Rust -
    #[repr(C)]
    pub struct VirtPageNum(pub usize);

    Tuple Fields

    0: usize

    Implementations

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    This method returns an Ordering between self and other. Read more

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

    This method tests for self and other values to be equal, and is used -by ==. Read more

    -

    This method tests for !=.

    -

    This method returns an ordering between self and other values if one exists. Read more

    -

    This method tests less than (for self and other) and is used by the < operator. Read more

    -

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more

    -

    This method tests greater than (for self and other) and is used by the > operator. Read more

    -

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/address/trait.StepByOne.html b/public/main/os/mm/address/trait.StepByOne.html deleted file mode 100644 index 63b7ba1c..00000000 --- a/public/main/os/mm/address/trait.StepByOne.html +++ /dev/null @@ -1,8 +0,0 @@ -StepByOne in os::mm::address - Rust -
    pub trait StepByOne {
    -    fn step(&mut self);
    -}

    Required methods

    Implementors

    - \ No newline at end of file diff --git a/public/main/os/mm/address/type.VPNRange.html b/public/main/os/mm/address/type.VPNRange.html deleted file mode 100644 index c1fbb02e..00000000 --- a/public/main/os/mm/address/type.VPNRange.html +++ /dev/null @@ -1,6 +0,0 @@ -VPNRange in os::mm::address - Rust -
    -

    Type Definition os::mm::address::VPNRange

    source · []
    pub type VPNRange = SimpleRange<VirtPageNum>;
    - \ No newline at end of file diff --git a/public/main/os/mm/fn.init.html b/public/main/os/mm/fn.init.html deleted file mode 100644 index 816c9a63..00000000 --- a/public/main/os/mm/fn.init.html +++ /dev/null @@ -1,6 +0,0 @@ -init in os::mm - Rust -
    -

    Function os::mm::init

    source · []
    pub fn init()
    - \ No newline at end of file diff --git a/public/main/os/mm/frame_allocator/fn.frame_alloc.html b/public/main/os/mm/frame_allocator/fn.frame_alloc.html deleted file mode 100644 index e484e1df..00000000 --- a/public/main/os/mm/frame_allocator/fn.frame_alloc.html +++ /dev/null @@ -1,6 +0,0 @@ -frame_alloc in os::mm::frame_allocator - Rust -
    pub fn frame_alloc() -> Option<FrameTracker>
    - \ No newline at end of file diff --git a/public/main/os/mm/frame_allocator/fn.frame_allocator_test.html b/public/main/os/mm/frame_allocator/fn.frame_allocator_test.html deleted file mode 100644 index d2f7f0c1..00000000 --- a/public/main/os/mm/frame_allocator/fn.frame_allocator_test.html +++ /dev/null @@ -1,6 +0,0 @@ -frame_allocator_test in os::mm::frame_allocator - Rust -
    pub fn frame_allocator_test()
    - \ No newline at end of file diff --git a/public/main/os/mm/frame_allocator/fn.frame_dealloc.html b/public/main/os/mm/frame_allocator/fn.frame_dealloc.html deleted file mode 100644 index 32d523ad..00000000 --- a/public/main/os/mm/frame_allocator/fn.frame_dealloc.html +++ /dev/null @@ -1,6 +0,0 @@ -frame_dealloc in os::mm::frame_allocator - Rust -
    pub fn frame_dealloc(ppn: PhysPageNum)
    - \ No newline at end of file diff --git a/public/main/os/mm/frame_allocator/fn.init_frame_allocator.html b/public/main/os/mm/frame_allocator/fn.init_frame_allocator.html deleted file mode 100644 index 5125c9df..00000000 --- a/public/main/os/mm/frame_allocator/fn.init_frame_allocator.html +++ /dev/null @@ -1,6 +0,0 @@ -init_frame_allocator in os::mm::frame_allocator - Rust -
    pub fn init_frame_allocator()
    - \ No newline at end of file diff --git a/public/main/os/mm/frame_allocator/index.html b/public/main/os/mm/frame_allocator/index.html deleted file mode 100644 index a23a0c23..00000000 --- a/public/main/os/mm/frame_allocator/index.html +++ /dev/null @@ -1,10 +0,0 @@ -os::mm::frame_allocator - Rust -
    - \ No newline at end of file diff --git a/public/main/os/mm/frame_allocator/sidebar-items.js b/public/main/os/mm/frame_allocator/sidebar-items.js deleted file mode 100644 index d63ca944..00000000 --- a/public/main/os/mm/frame_allocator/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["frame_alloc",""],["frame_allocator_test",""],["frame_dealloc",""],["init_frame_allocator",""]],"struct":[["FRAME_ALLOCATOR",""],["FrameTracker",""],["StackFrameAllocator",""]],"trait":[["FrameAllocator",""]],"type":[["FrameAllocatorImpl",""]]}); \ No newline at end of file diff --git a/public/main/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html b/public/main/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html deleted file mode 100644 index a34a0b89..00000000 --- a/public/main/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html +++ /dev/null @@ -1,20 +0,0 @@ -FRAME_ALLOCATOR in os::mm::frame_allocator - Rust -
    pub struct FRAME_ALLOCATOR {
    -    __private_field: (),
    -}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPIntrFreeCell<StackFrameAllocator>>

    Panic if the data has been borrowed.

    -

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/frame_allocator/struct.FrameTracker.html b/public/main/os/mm/frame_allocator/struct.FrameTracker.html deleted file mode 100644 index dfc45fe7..00000000 --- a/public/main/os/mm/frame_allocator/struct.FrameTracker.html +++ /dev/null @@ -1,19 +0,0 @@ -FrameTracker in os::mm::frame_allocator - Rust -
    pub struct FrameTracker {
    -    pub ppn: PhysPageNum,
    -}

    Fields

    ppn: PhysPageNum

    Implementations

    Trait Implementations

    Formats the value using the given formatter. Read more

    -

    Executes the destructor for this type. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/frame_allocator/struct.StackFrameAllocator.html b/public/main/os/mm/frame_allocator/struct.StackFrameAllocator.html deleted file mode 100644 index 5a401b3a..00000000 --- a/public/main/os/mm/frame_allocator/struct.StackFrameAllocator.html +++ /dev/null @@ -1,19 +0,0 @@ -StackFrameAllocator in os::mm::frame_allocator - Rust -
    pub struct StackFrameAllocator {
    -    current: usize,
    -    end: usize,
    -    recycled: Vec<usize>,
    -}

    Fields

    current: usizeend: usizerecycled: Vec<usize>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/frame_allocator/trait.FrameAllocator.html b/public/main/os/mm/frame_allocator/trait.FrameAllocator.html deleted file mode 100644 index 00839253..00000000 --- a/public/main/os/mm/frame_allocator/trait.FrameAllocator.html +++ /dev/null @@ -1,10 +0,0 @@ -FrameAllocator in os::mm::frame_allocator - Rust -
    trait FrameAllocator {
    -    fn new() -> Self;
    -
    fn alloc(&mut self) -> Option<PhysPageNum>; -
    fn dealloc(&mut self, ppn: PhysPageNum); -}

    Required methods

    Implementors

    - \ No newline at end of file diff --git a/public/main/os/mm/frame_allocator/type.FrameAllocatorImpl.html b/public/main/os/mm/frame_allocator/type.FrameAllocatorImpl.html deleted file mode 100644 index d9a85d3e..00000000 --- a/public/main/os/mm/frame_allocator/type.FrameAllocatorImpl.html +++ /dev/null @@ -1,6 +0,0 @@ -FrameAllocatorImpl in os::mm::frame_allocator - Rust -
    type FrameAllocatorImpl = StackFrameAllocator;
    - \ No newline at end of file diff --git a/public/main/os/mm/heap_allocator/fn.handle_alloc_error.html b/public/main/os/mm/heap_allocator/fn.handle_alloc_error.html deleted file mode 100644 index f85900a1..00000000 --- a/public/main/os/mm/heap_allocator/fn.handle_alloc_error.html +++ /dev/null @@ -1,6 +0,0 @@ -handle_alloc_error in os::mm::heap_allocator - Rust -
    pub fn handle_alloc_error(layout: Layout) -> !
    - \ No newline at end of file diff --git a/public/main/os/mm/heap_allocator/fn.heap_test.html b/public/main/os/mm/heap_allocator/fn.heap_test.html deleted file mode 100644 index 60341633..00000000 --- a/public/main/os/mm/heap_allocator/fn.heap_test.html +++ /dev/null @@ -1,6 +0,0 @@ -heap_test in os::mm::heap_allocator - Rust -
    pub fn heap_test()
    - \ No newline at end of file diff --git a/public/main/os/mm/heap_allocator/fn.init_heap.html b/public/main/os/mm/heap_allocator/fn.init_heap.html deleted file mode 100644 index 043c81db..00000000 --- a/public/main/os/mm/heap_allocator/fn.init_heap.html +++ /dev/null @@ -1,6 +0,0 @@ -init_heap in os::mm::heap_allocator - Rust -
    pub fn init_heap()
    - \ No newline at end of file diff --git a/public/main/os/mm/heap_allocator/index.html b/public/main/os/mm/heap_allocator/index.html deleted file mode 100644 index 1c78df9a..00000000 --- a/public/main/os/mm/heap_allocator/index.html +++ /dev/null @@ -1,8 +0,0 @@ -os::mm::heap_allocator - Rust -
    - \ No newline at end of file diff --git a/public/main/os/mm/heap_allocator/sidebar-items.js b/public/main/os/mm/heap_allocator/sidebar-items.js deleted file mode 100644 index d1f423dc..00000000 --- a/public/main/os/mm/heap_allocator/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["handle_alloc_error",""],["heap_test",""],["init_heap",""]],"static":[["HEAP_ALLOCATOR",""],["HEAP_SPACE",""]]}); \ No newline at end of file diff --git a/public/main/os/mm/heap_allocator/static.HEAP_ALLOCATOR.html b/public/main/os/mm/heap_allocator/static.HEAP_ALLOCATOR.html deleted file mode 100644 index 80e8d72a..00000000 --- a/public/main/os/mm/heap_allocator/static.HEAP_ALLOCATOR.html +++ /dev/null @@ -1,6 +0,0 @@ -HEAP_ALLOCATOR in os::mm::heap_allocator - Rust -
    static HEAP_ALLOCATOR: LockedHeap
    - \ No newline at end of file diff --git a/public/main/os/mm/heap_allocator/static.HEAP_SPACE.html b/public/main/os/mm/heap_allocator/static.HEAP_SPACE.html deleted file mode 100644 index 16025214..00000000 --- a/public/main/os/mm/heap_allocator/static.HEAP_SPACE.html +++ /dev/null @@ -1,6 +0,0 @@ -HEAP_SPACE in os::mm::heap_allocator - Rust -
    static mut HEAP_SPACE: [u8; 2097152]
    - \ No newline at end of file diff --git a/public/main/os/mm/index.html b/public/main/os/mm/index.html deleted file mode 100644 index 64e757c6..00000000 --- a/public/main/os/mm/index.html +++ /dev/null @@ -1,9 +0,0 @@ -os::mm - Rust -
    -

    Module os::mm

    source · []

    Re-exports

    -
    pub use address::PhysAddr;
    pub use address::PhysPageNum;
    pub use address::StepByOne;
    pub use address::VirtAddr;
    pub use address::VirtPageNum;
    pub use frame_allocator::frame_alloc;
    pub use frame_allocator::frame_dealloc;
    pub use frame_allocator::FrameTracker;
    pub use memory_set::remap_test;
    pub use memory_set::kernel_token;
    pub use memory_set::MapPermission;
    pub use memory_set::MemorySet;
    pub use memory_set::KERNEL_SPACE;
    pub use memory_set::KERNEL_SPACE;
    pub use page_table::translated_byte_buffer;
    pub use page_table::translated_ref;
    pub use page_table::translated_refmut;
    pub use page_table::translated_str;
    pub use page_table::PageTable;
    pub use page_table::PageTableEntry;
    pub use page_table::UserBuffer;
    pub use page_table::UserBufferIterator;

    Modules

    -

    Functions

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/memory_set/enum.MapType.html b/public/main/os/mm/memory_set/enum.MapType.html deleted file mode 100644 index f680740a..00000000 --- a/public/main/os/mm/memory_set/enum.MapType.html +++ /dev/null @@ -1,27 +0,0 @@ -MapType in os::mm::memory_set - Rust -
    pub enum MapType {
    -    Identical,
    -    Framed,
    -}

    Variants

    Identical

    Framed

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    This method tests for self and other values to be equal, and is used -by ==. Read more

    -

    This method tests for !=.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/memory_set/fn.ebss.html b/public/main/os/mm/memory_set/fn.ebss.html deleted file mode 100644 index 3bd8584f..00000000 --- a/public/main/os/mm/memory_set/fn.ebss.html +++ /dev/null @@ -1,6 +0,0 @@ -ebss in os::mm::memory_set - Rust -
    -

    Function os::mm::memory_set::ebss

    source · []
    unsafe extern "C" fn ebss()
    - \ No newline at end of file diff --git a/public/main/os/mm/memory_set/fn.edata.html b/public/main/os/mm/memory_set/fn.edata.html deleted file mode 100644 index b9f4cc53..00000000 --- a/public/main/os/mm/memory_set/fn.edata.html +++ /dev/null @@ -1,6 +0,0 @@ -edata in os::mm::memory_set - Rust -
    -

    Function os::mm::memory_set::edata

    source · []
    unsafe extern "C" fn edata()
    - \ No newline at end of file diff --git a/public/main/os/mm/memory_set/fn.ekernel.html b/public/main/os/mm/memory_set/fn.ekernel.html deleted file mode 100644 index a68105d6..00000000 --- a/public/main/os/mm/memory_set/fn.ekernel.html +++ /dev/null @@ -1,6 +0,0 @@ -ekernel in os::mm::memory_set - Rust -
    -

    Function os::mm::memory_set::ekernel

    source · []
    unsafe extern "C" fn ekernel()
    - \ No newline at end of file diff --git a/public/main/os/mm/memory_set/fn.erodata.html b/public/main/os/mm/memory_set/fn.erodata.html deleted file mode 100644 index 7a42fc8f..00000000 --- a/public/main/os/mm/memory_set/fn.erodata.html +++ /dev/null @@ -1,6 +0,0 @@ -erodata in os::mm::memory_set - Rust -
    -

    Function os::mm::memory_set::erodata

    source · []
    unsafe extern "C" fn erodata()
    - \ No newline at end of file diff --git a/public/main/os/mm/memory_set/fn.etext.html b/public/main/os/mm/memory_set/fn.etext.html deleted file mode 100644 index dfa43cfd..00000000 --- a/public/main/os/mm/memory_set/fn.etext.html +++ /dev/null @@ -1,6 +0,0 @@ -etext in os::mm::memory_set - Rust -
    -

    Function os::mm::memory_set::etext

    source · []
    unsafe extern "C" fn etext()
    - \ No newline at end of file diff --git a/public/main/os/mm/memory_set/fn.kernel_token.html b/public/main/os/mm/memory_set/fn.kernel_token.html deleted file mode 100644 index 91f879db..00000000 --- a/public/main/os/mm/memory_set/fn.kernel_token.html +++ /dev/null @@ -1,6 +0,0 @@ -kernel_token in os::mm::memory_set - Rust -
    pub fn kernel_token() -> usize
    - \ No newline at end of file diff --git a/public/main/os/mm/memory_set/fn.remap_test.html b/public/main/os/mm/memory_set/fn.remap_test.html deleted file mode 100644 index 0dd713c2..00000000 --- a/public/main/os/mm/memory_set/fn.remap_test.html +++ /dev/null @@ -1,6 +0,0 @@ -remap_test in os::mm::memory_set - Rust -
    pub fn remap_test()
    - \ No newline at end of file diff --git a/public/main/os/mm/memory_set/fn.sbss_with_stack.html b/public/main/os/mm/memory_set/fn.sbss_with_stack.html deleted file mode 100644 index ecbf7b8a..00000000 --- a/public/main/os/mm/memory_set/fn.sbss_with_stack.html +++ /dev/null @@ -1,6 +0,0 @@ -sbss_with_stack in os::mm::memory_set - Rust -
    unsafe extern "C" fn sbss_with_stack()
    - \ No newline at end of file diff --git a/public/main/os/mm/memory_set/fn.sdata.html b/public/main/os/mm/memory_set/fn.sdata.html deleted file mode 100644 index 21790d43..00000000 --- a/public/main/os/mm/memory_set/fn.sdata.html +++ /dev/null @@ -1,6 +0,0 @@ -sdata in os::mm::memory_set - Rust -
    -

    Function os::mm::memory_set::sdata

    source · []
    unsafe extern "C" fn sdata()
    - \ No newline at end of file diff --git a/public/main/os/mm/memory_set/fn.srodata.html b/public/main/os/mm/memory_set/fn.srodata.html deleted file mode 100644 index 12becf5b..00000000 --- a/public/main/os/mm/memory_set/fn.srodata.html +++ /dev/null @@ -1,6 +0,0 @@ -srodata in os::mm::memory_set - Rust -
    -

    Function os::mm::memory_set::srodata

    source · []
    unsafe extern "C" fn srodata()
    - \ No newline at end of file diff --git a/public/main/os/mm/memory_set/fn.stext.html b/public/main/os/mm/memory_set/fn.stext.html deleted file mode 100644 index f462b9fc..00000000 --- a/public/main/os/mm/memory_set/fn.stext.html +++ /dev/null @@ -1,6 +0,0 @@ -stext in os::mm::memory_set - Rust -
    -

    Function os::mm::memory_set::stext

    source · []
    unsafe extern "C" fn stext()
    - \ No newline at end of file diff --git a/public/main/os/mm/memory_set/fn.strampoline.html b/public/main/os/mm/memory_set/fn.strampoline.html deleted file mode 100644 index 6dd5b9da..00000000 --- a/public/main/os/mm/memory_set/fn.strampoline.html +++ /dev/null @@ -1,6 +0,0 @@ -strampoline in os::mm::memory_set - Rust -
    unsafe extern "C" fn strampoline()
    - \ No newline at end of file diff --git a/public/main/os/mm/memory_set/index.html b/public/main/os/mm/memory_set/index.html deleted file mode 100644 index 5b9807e5..00000000 --- a/public/main/os/mm/memory_set/index.html +++ /dev/null @@ -1,9 +0,0 @@ -os::mm::memory_set - Rust -
    - \ No newline at end of file diff --git a/public/main/os/mm/memory_set/sidebar-items.js b/public/main/os/mm/memory_set/sidebar-items.js deleted file mode 100644 index 9883059c..00000000 --- a/public/main/os/mm/memory_set/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"enum":[["MapType",""]],"fn":[["ebss",""],["edata",""],["ekernel",""],["erodata",""],["etext",""],["kernel_token",""],["remap_test",""],["sbss_with_stack",""],["sdata",""],["srodata",""],["stext",""],["strampoline",""]],"struct":[["KERNEL_SPACE",""],["MapArea",""],["MapPermission",""],["MemorySet",""]]}); \ No newline at end of file diff --git a/public/main/os/mm/memory_set/struct.KERNEL_SPACE.html b/public/main/os/mm/memory_set/struct.KERNEL_SPACE.html deleted file mode 100644 index 56304ff0..00000000 --- a/public/main/os/mm/memory_set/struct.KERNEL_SPACE.html +++ /dev/null @@ -1,19 +0,0 @@ -KERNEL_SPACE in os::mm::memory_set - Rust -
    pub struct KERNEL_SPACE {
    -    __private_field: (),
    -}

    Fields

    __private_field: ()

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/memory_set/struct.MapArea.html b/public/main/os/mm/memory_set/struct.MapArea.html deleted file mode 100644 index 67f30feb..00000000 --- a/public/main/os/mm/memory_set/struct.MapArea.html +++ /dev/null @@ -1,22 +0,0 @@ -MapArea in os::mm::memory_set - Rust -
    pub struct MapArea {
    -    vpn_range: SimpleRange<VirtPageNum>,
    -    data_frames: BTreeMap<VirtPageNum, FrameTracker>,
    -    map_type: MapType,
    -    map_perm: MapPermission,
    -}

    Fields

    vpn_range: SimpleRange<VirtPageNum>data_frames: BTreeMap<VirtPageNum, FrameTracker>map_type: MapTypemap_perm: MapPermission

    Implementations

    data: start-aligned but maybe with shorter length -assume that all frames were cleared before

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/memory_set/struct.MapPermission.html b/public/main/os/mm/memory_set/struct.MapPermission.html deleted file mode 100644 index 8b760210..00000000 --- a/public/main/os/mm/memory_set/struct.MapPermission.html +++ /dev/null @@ -1,119 +0,0 @@ -MapPermission in os::mm::memory_set - Rust -
    pub struct MapPermission {
    -    bits: u8,
    -}

    Fields

    bits: u8

    Implementations

    Returns an empty set of flags.

    -

    Returns the set containing all flags.

    -

    Returns the raw value of the flags currently stored.

    -

    Convert from underlying bit representation, unless that -representation contains bits that do not correspond to a flag.

    -

    Convert from underlying bit representation, dropping any bits -that do not correspond to flags.

    -

    Convert from underlying bit representation, preserving all -bits (even those not corresponding to a defined flag).

    -
    Safety
    -

    The caller of the bitflags! macro can chose to allow or -disallow extra bits for their bitflags type.

    -

    The caller of from_bits_unchecked() has to ensure that -all bits correspond to a defined flag or that extra bits -are valid for this bitflags type.

    -

    Returns true if no flags are currently stored.

    -

    Returns true if all flags are currently set.

    -

    Returns true if there are flags common to both self and other.

    -

    Returns true if all of the flags in other are contained within self.

    -

    Inserts the specified flags in-place.

    -

    Removes the specified flags in-place.

    -

    Toggles the specified flags in-place.

    -

    Inserts or removes the specified flags depending on the passed value.

    -

    Returns the intersection between the flags in self and -other.

    -

    Specifically, the returned set contains only the flags which are -present in both self and other.

    -

    This is equivalent to using the & operator (e.g. -ops::BitAnd), as in flags & other.

    -

    Returns the union of between the flags in self and other.

    -

    Specifically, the returned set contains all flags which are -present in either self or other, including any which are -present in both (see Self::symmetric_difference if that -is undesirable).

    -

    This is equivalent to using the | operator (e.g. -ops::BitOr), as in flags | other.

    -

    Returns the difference between the flags in self and other.

    -

    Specifically, the returned set contains all flags present in -self, except for the ones present in other.

    -

    It is also conceptually equivalent to the “bit-clear” operation: -flags & !other (and this syntax is also supported).

    -

    This is equivalent to using the - operator (e.g. -ops::Sub), as in flags - other.

    -

    Returns the symmetric difference between the flags -in self and other.

    -

    Specifically, the returned set contains the flags present which -are present in self or other, but that are not present in -both. Equivalently, it contains the flags present in exactly -one of the sets self and other.

    -

    This is equivalent to using the ^ operator (e.g. -ops::BitXor), as in flags ^ other.

    -

    Returns the complement of this set of flags.

    -

    Specifically, the returned set contains all the flags which are -not set in self, but which are allowed for this type.

    -

    Alternatively, it can be thought of as the set difference -between Self::all() and self (e.g. Self::all() - self)

    -

    This is equivalent to using the ! operator (e.g. -ops::Not), as in !flags.

    -

    Trait Implementations

    Formats the value using the given formatter.

    -

    Returns the intersection between the two sets of flags.

    -

    The resulting type after applying the & operator.

    -

    Disables all flags disabled in the set.

    -

    Returns the union of the two sets of flags.

    -

    The resulting type after applying the | operator.

    -

    Adds the set of flags.

    -

    Returns the left flags, but with all the right flags toggled.

    -

    The resulting type after applying the ^ operator.

    -

    Toggles the set of flags.

    -

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Extends a collection with the contents of an iterator. Read more

    -
    🔬 This is a nightly-only experimental API. (extend_one)

    Extends a collection with exactly one element.

    -
    🔬 This is a nightly-only experimental API. (extend_one)

    Reserves capacity in a collection for the given number of additional elements. Read more

    -

    Creates a value from an iterator. Read more

    -

    Feeds this value into the given Hasher. Read more

    -

    Feeds a slice of this type into the given Hasher. Read more

    -

    Formats the value using the given formatter.

    -

    Returns the complement of this set of flags.

    -

    The resulting type after applying the ! operator.

    -

    Formats the value using the given formatter.

    -

    This method returns an Ordering between self and other. Read more

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

    This method tests for self and other values to be equal, and is used -by ==. Read more

    -

    This method tests for !=.

    -

    This method returns an ordering between self and other values if one exists. Read more

    -

    This method tests less than (for self and other) and is used by the < operator. Read more

    -

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more

    -

    This method tests greater than (for self and other) and is used by the > operator. Read more

    -

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    -

    Returns the set difference of the two sets of flags.

    -

    The resulting type after applying the - operator.

    -

    Disables all flags enabled in the set.

    -

    Formats the value using the given formatter.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/memory_set/struct.MemorySet.html b/public/main/os/mm/memory_set/struct.MemorySet.html deleted file mode 100644 index 7487efc3..00000000 --- a/public/main/os/mm/memory_set/struct.MemorySet.html +++ /dev/null @@ -1,23 +0,0 @@ -MemorySet in os::mm::memory_set - Rust -
    pub struct MemorySet {
    -    page_table: PageTable,
    -    areas: Vec<MapArea>,
    -}

    Fields

    page_table: PageTableareas: Vec<MapArea>

    Implementations

    Assume that no conflicts.

    -

    Mention that trampoline is not collected by areas.

    -

    Without kernel stacks.

    -

    Include sections in elf and trampoline, -also returns user_sp_base and entry point.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/page_table/fn.translated_byte_buffer.html b/public/main/os/mm/page_table/fn.translated_byte_buffer.html deleted file mode 100644 index 0a78b767..00000000 --- a/public/main/os/mm/page_table/fn.translated_byte_buffer.html +++ /dev/null @@ -1,6 +0,0 @@ -translated_byte_buffer in os::mm::page_table - Rust -
    pub fn translated_byte_buffer(
        token: usize,
        ptr: *const u8,
        len: usize
    ) -> Vec<&'static mut [u8]>
    - \ No newline at end of file diff --git a/public/main/os/mm/page_table/fn.translated_ref.html b/public/main/os/mm/page_table/fn.translated_ref.html deleted file mode 100644 index ec3d9511..00000000 --- a/public/main/os/mm/page_table/fn.translated_ref.html +++ /dev/null @@ -1,6 +0,0 @@ -translated_ref in os::mm::page_table - Rust -
    pub fn translated_ref<T>(token: usize, ptr: *const T) -> &'static T
    - \ No newline at end of file diff --git a/public/main/os/mm/page_table/fn.translated_refmut.html b/public/main/os/mm/page_table/fn.translated_refmut.html deleted file mode 100644 index 2c696d79..00000000 --- a/public/main/os/mm/page_table/fn.translated_refmut.html +++ /dev/null @@ -1,6 +0,0 @@ -translated_refmut in os::mm::page_table - Rust -
    pub fn translated_refmut<T>(token: usize, ptr: *mut T) -> &'static mut T
    - \ No newline at end of file diff --git a/public/main/os/mm/page_table/fn.translated_str.html b/public/main/os/mm/page_table/fn.translated_str.html deleted file mode 100644 index 9660da3e..00000000 --- a/public/main/os/mm/page_table/fn.translated_str.html +++ /dev/null @@ -1,7 +0,0 @@ -translated_str in os::mm::page_table - Rust -
    pub fn translated_str(token: usize, ptr: *const u8) -> String
    Expand description

    Load a string from other address spaces into kernel space without an end \0.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/page_table/index.html b/public/main/os/mm/page_table/index.html deleted file mode 100644 index 8e6224e4..00000000 --- a/public/main/os/mm/page_table/index.html +++ /dev/null @@ -1,9 +0,0 @@ -os::mm::page_table - Rust -
    - \ No newline at end of file diff --git a/public/main/os/mm/page_table/sidebar-items.js b/public/main/os/mm/page_table/sidebar-items.js deleted file mode 100644 index 2c9e8d24..00000000 --- a/public/main/os/mm/page_table/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["translated_byte_buffer",""],["translated_ref",""],["translated_refmut",""],["translated_str","Load a string from other address spaces into kernel space without an end `\\0`."]],"struct":[["PTEFlags",""],["PageTable",""],["PageTableEntry",""],["UserBuffer",""],["UserBufferIterator",""]]}); \ No newline at end of file diff --git a/public/main/os/mm/page_table/struct.PTEFlags.html b/public/main/os/mm/page_table/struct.PTEFlags.html deleted file mode 100644 index f73ea52f..00000000 --- a/public/main/os/mm/page_table/struct.PTEFlags.html +++ /dev/null @@ -1,119 +0,0 @@ -PTEFlags in os::mm::page_table - Rust -
    pub struct PTEFlags {
    -    bits: u8,
    -}

    Fields

    bits: u8

    Implementations

    Returns an empty set of flags.

    -

    Returns the set containing all flags.

    -

    Returns the raw value of the flags currently stored.

    -

    Convert from underlying bit representation, unless that -representation contains bits that do not correspond to a flag.

    -

    Convert from underlying bit representation, dropping any bits -that do not correspond to flags.

    -

    Convert from underlying bit representation, preserving all -bits (even those not corresponding to a defined flag).

    -
    Safety
    -

    The caller of the bitflags! macro can chose to allow or -disallow extra bits for their bitflags type.

    -

    The caller of from_bits_unchecked() has to ensure that -all bits correspond to a defined flag or that extra bits -are valid for this bitflags type.

    -

    Returns true if no flags are currently stored.

    -

    Returns true if all flags are currently set.

    -

    Returns true if there are flags common to both self and other.

    -

    Returns true if all of the flags in other are contained within self.

    -

    Inserts the specified flags in-place.

    -

    Removes the specified flags in-place.

    -

    Toggles the specified flags in-place.

    -

    Inserts or removes the specified flags depending on the passed value.

    -

    Returns the intersection between the flags in self and -other.

    -

    Specifically, the returned set contains only the flags which are -present in both self and other.

    -

    This is equivalent to using the & operator (e.g. -ops::BitAnd), as in flags & other.

    -

    Returns the union of between the flags in self and other.

    -

    Specifically, the returned set contains all flags which are -present in either self or other, including any which are -present in both (see Self::symmetric_difference if that -is undesirable).

    -

    This is equivalent to using the | operator (e.g. -ops::BitOr), as in flags | other.

    -

    Returns the difference between the flags in self and other.

    -

    Specifically, the returned set contains all flags present in -self, except for the ones present in other.

    -

    It is also conceptually equivalent to the “bit-clear” operation: -flags & !other (and this syntax is also supported).

    -

    This is equivalent to using the - operator (e.g. -ops::Sub), as in flags - other.

    -

    Returns the symmetric difference between the flags -in self and other.

    -

    Specifically, the returned set contains the flags present which -are present in self or other, but that are not present in -both. Equivalently, it contains the flags present in exactly -one of the sets self and other.

    -

    This is equivalent to using the ^ operator (e.g. -ops::BitXor), as in flags ^ other.

    -

    Returns the complement of this set of flags.

    -

    Specifically, the returned set contains all the flags which are -not set in self, but which are allowed for this type.

    -

    Alternatively, it can be thought of as the set difference -between Self::all() and self (e.g. Self::all() - self)

    -

    This is equivalent to using the ! operator (e.g. -ops::Not), as in !flags.

    -

    Trait Implementations

    Formats the value using the given formatter.

    -

    Returns the intersection between the two sets of flags.

    -

    The resulting type after applying the & operator.

    -

    Disables all flags disabled in the set.

    -

    Returns the union of the two sets of flags.

    -

    The resulting type after applying the | operator.

    -

    Adds the set of flags.

    -

    Returns the left flags, but with all the right flags toggled.

    -

    The resulting type after applying the ^ operator.

    -

    Toggles the set of flags.

    -

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Extends a collection with the contents of an iterator. Read more

    -
    🔬 This is a nightly-only experimental API. (extend_one)

    Extends a collection with exactly one element.

    -
    🔬 This is a nightly-only experimental API. (extend_one)

    Reserves capacity in a collection for the given number of additional elements. Read more

    -

    Creates a value from an iterator. Read more

    -

    Feeds this value into the given Hasher. Read more

    -

    Feeds a slice of this type into the given Hasher. Read more

    -

    Formats the value using the given formatter.

    -

    Returns the complement of this set of flags.

    -

    The resulting type after applying the ! operator.

    -

    Formats the value using the given formatter.

    -

    This method returns an Ordering between self and other. Read more

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

    This method tests for self and other values to be equal, and is used -by ==. Read more

    -

    This method tests for !=.

    -

    This method returns an ordering between self and other values if one exists. Read more

    -

    This method tests less than (for self and other) and is used by the < operator. Read more

    -

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more

    -

    This method tests greater than (for self and other) and is used by the > operator. Read more

    -

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    -

    Returns the set difference of the two sets of flags.

    -

    The resulting type after applying the - operator.

    -

    Disables all flags enabled in the set.

    -

    Formats the value using the given formatter.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/page_table/struct.PageTable.html b/public/main/os/mm/page_table/struct.PageTable.html deleted file mode 100644 index 07010acc..00000000 --- a/public/main/os/mm/page_table/struct.PageTable.html +++ /dev/null @@ -1,20 +0,0 @@ -PageTable in os::mm::page_table - Rust -
    pub struct PageTable {
    -    root_ppn: PhysPageNum,
    -    frames: Vec<FrameTracker>,
    -}

    Fields

    root_ppn: PhysPageNumframes: Vec<FrameTracker>

    Implementations

    Assume that it won’t oom when creating/mapping.

    -

    Temporarily used to get arguments from user space.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/page_table/struct.PageTableEntry.html b/public/main/os/mm/page_table/struct.PageTableEntry.html deleted file mode 100644 index cc67b5da..00000000 --- a/public/main/os/mm/page_table/struct.PageTableEntry.html +++ /dev/null @@ -1,22 +0,0 @@ -PageTableEntry in os::mm::page_table - Rust -
    #[repr(C)]
    pub struct PageTableEntry { - pub bits: usize, -}

    Fields

    bits: usize

    Implementations

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/page_table/struct.UserBuffer.html b/public/main/os/mm/page_table/struct.UserBuffer.html deleted file mode 100644 index 933e4bcb..00000000 --- a/public/main/os/mm/page_table/struct.UserBuffer.html +++ /dev/null @@ -1,20 +0,0 @@ -UserBuffer in os::mm::page_table - Rust -
    pub struct UserBuffer {
    -    pub buffers: Vec<&'static mut [u8]>,
    -}

    Fields

    buffers: Vec<&'static mut [u8]>

    Implementations

    Trait Implementations

    The type of the elements being iterated over.

    -

    Which kind of iterator are we turning this into?

    -

    Creates an iterator from a value. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/page_table/struct.UserBufferIterator.html b/public/main/os/mm/page_table/struct.UserBufferIterator.html deleted file mode 100644 index c4f95bb8..00000000 --- a/public/main/os/mm/page_table/struct.UserBufferIterator.html +++ /dev/null @@ -1,131 +0,0 @@ -UserBufferIterator in os::mm::page_table - Rust -
    pub struct UserBufferIterator {
    -    buffers: Vec<&'static mut [u8]>,
    -    current_buffer: usize,
    -    current_idx: usize,
    -}

    Fields

    buffers: Vec<&'static mut [u8]>current_buffer: usizecurrent_idx: usize

    Trait Implementations

    The type of the elements being iterated over.

    -

    Advances the iterator and returns the next value. Read more

    -

    Returns the bounds on the remaining length of the iterator. Read more

    -

    Consumes the iterator, counting the number of iterations and returning it. Read more

    -

    Consumes the iterator, returning the last element. Read more

    -
    🔬 This is a nightly-only experimental API. (iter_advance_by)

    Advances the iterator by n elements. Read more

    -

    Returns the nth element of the iterator. Read more

    -

    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more

    -

    Takes two iterators and creates a new iterator over both in sequence. Read more

    -

    ‘Zips up’ two iterators into a single iterator of pairs. Read more

    -
    🔬 This is a nightly-only experimental API. (iter_intersperse)

    Creates a new iterator which places a copy of separator between adjacent -items of the original iterator. Read more

    -
    🔬 This is a nightly-only experimental API. (iter_intersperse)

    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more

    -

    Takes a closure and creates an iterator which calls that closure on each -element. Read more

    -

    Calls a closure on each element of an iterator. Read more

    -

    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more

    -

    Creates an iterator that both filters and maps. Read more

    -

    Creates an iterator which gives the current iteration count as well as -the next value. Read more

    -

    Creates an iterator which can use the peek and peek_mut methods -to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more

    -

    Creates an iterator that skips elements based on a predicate. Read more

    -

    Creates an iterator that yields elements based on a predicate. Read more

    -

    Creates an iterator that both yields elements based on a predicate and maps. Read more

    -

    Creates an iterator that skips the first n elements. Read more

    -

    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more

    -

    An iterator adapter similar to fold that holds internal state and -produces a new iterator. Read more

    -

    Creates an iterator that works like map, but flattens nested structure. Read more

    -

    Creates an iterator that flattens nested structure. Read more

    -

    Creates an iterator which ends after the first None. Read more

    -

    Does something with each element of an iterator, passing the value on. Read more

    -

    Borrows an iterator, rather than consuming it. Read more

    -

    Transforms an iterator into a collection. Read more

    -

    Consumes an iterator, creating two collections from it. Read more

    -
    🔬 This is a nightly-only experimental API. (iter_partition_in_place)

    Reorders the elements of this iterator in-place according to the given predicate, -such that all those that return true precede all those that return false. -Returns the number of true elements found. Read more

    -
    🔬 This is a nightly-only experimental API. (iter_is_partitioned)

    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more

    -

    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more

    -

    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more

    -

    Folds every element into an accumulator by applying an operation, -returning the final result. Read more

    -

    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more

    -
    🔬 This is a nightly-only experimental API. (iterator_try_reduce)

    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more

    -

    Tests if every element of the iterator matches a predicate. Read more

    -

    Tests if any element of the iterator matches a predicate. Read more

    -

    Searches for an element of an iterator that satisfies a predicate. Read more

    -

    Applies function to the elements of iterator and returns -the first non-none result. Read more

    -
    🔬 This is a nightly-only experimental API. (try_find)

    Applies function to the elements of iterator and returns -the first true result or the first error. Read more

    -

    Searches for an element in an iterator, returning its index. Read more

    -

    Searches for an element in an iterator from the right, returning its -index. Read more

    -

    Returns the maximum element of an iterator. Read more

    -

    Returns the minimum element of an iterator. Read more

    -

    Returns the element that gives the maximum value from the -specified function. Read more

    -

    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more

    -

    Returns the element that gives the minimum value from the -specified function. Read more

    -

    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more

    -

    Reverses an iterator’s direction. Read more

    -

    Converts an iterator of pairs into a pair of containers. Read more

    -

    Creates an iterator which copies all of its elements. Read more

    -

    Creates an iterator which clones all of its elements. Read more

    -

    Repeats an iterator endlessly. Read more

    -

    Sums the elements of an iterator. Read more

    -

    Iterates over the entire iterator, multiplying all the elements Read more

    -

    Lexicographically compares the elements of this Iterator with those -of another. Read more

    -
    🔬 This is a nightly-only experimental API. (iter_order_by)

    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more

    -

    Lexicographically compares the elements of this Iterator with those -of another. Read more

    -
    🔬 This is a nightly-only experimental API. (iter_order_by)

    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more

    -

    Determines if the elements of this Iterator are equal to those of -another. Read more

    -
    🔬 This is a nightly-only experimental API. (iter_order_by)

    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more

    -

    Determines if the elements of this Iterator are unequal to those of -another. Read more

    -

    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more

    -

    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more

    -

    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more

    -

    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more

    -
    🔬 This is a nightly-only experimental API. (is_sorted)

    Checks if the elements of this iterator are sorted. Read more

    -
    🔬 This is a nightly-only experimental API. (is_sorted)

    Checks if the elements of this iterator are sorted using the given comparator function. Read more

    -
    🔬 This is a nightly-only experimental API. (is_sorted)

    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type of the elements being iterated over.

    -

    Which kind of iterator are we turning this into?

    -

    Creates an iterator from a value. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/mm/sidebar-items.js b/public/main/os/mm/sidebar-items.js deleted file mode 100644 index 5e2f1aaa..00000000 --- a/public/main/os/mm/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["init",""]],"mod":[["address",""],["frame_allocator",""],["heap_allocator",""],["memory_set",""],["page_table",""]]}); \ No newline at end of file diff --git a/public/main/os/sbi/constant.SBI_CLEAR_IPI.html b/public/main/os/sbi/constant.SBI_CLEAR_IPI.html deleted file mode 100644 index c191974c..00000000 --- a/public/main/os/sbi/constant.SBI_CLEAR_IPI.html +++ /dev/null @@ -1,6 +0,0 @@ -SBI_CLEAR_IPI in os::sbi - Rust -
    -

    Constant os::sbi::SBI_CLEAR_IPI

    source · []
    const SBI_CLEAR_IPI: usize = 3;
    - \ No newline at end of file diff --git a/public/main/os/sbi/constant.SBI_CONSOLE_GETCHAR.html b/public/main/os/sbi/constant.SBI_CONSOLE_GETCHAR.html deleted file mode 100644 index 12640c16..00000000 --- a/public/main/os/sbi/constant.SBI_CONSOLE_GETCHAR.html +++ /dev/null @@ -1,6 +0,0 @@ -SBI_CONSOLE_GETCHAR in os::sbi - Rust -
    const SBI_CONSOLE_GETCHAR: usize = 2;
    - \ No newline at end of file diff --git a/public/main/os/sbi/constant.SBI_CONSOLE_PUTCHAR.html b/public/main/os/sbi/constant.SBI_CONSOLE_PUTCHAR.html deleted file mode 100644 index 11240f3f..00000000 --- a/public/main/os/sbi/constant.SBI_CONSOLE_PUTCHAR.html +++ /dev/null @@ -1,6 +0,0 @@ -SBI_CONSOLE_PUTCHAR in os::sbi - Rust -
    const SBI_CONSOLE_PUTCHAR: usize = 1;
    - \ No newline at end of file diff --git a/public/main/os/sbi/constant.SBI_REMOTE_FENCE_I.html b/public/main/os/sbi/constant.SBI_REMOTE_FENCE_I.html deleted file mode 100644 index 35e0c19e..00000000 --- a/public/main/os/sbi/constant.SBI_REMOTE_FENCE_I.html +++ /dev/null @@ -1,6 +0,0 @@ -SBI_REMOTE_FENCE_I in os::sbi - Rust -
    const SBI_REMOTE_FENCE_I: usize = 5;
    - \ No newline at end of file diff --git a/public/main/os/sbi/constant.SBI_REMOTE_SFENCE_VMA.html b/public/main/os/sbi/constant.SBI_REMOTE_SFENCE_VMA.html deleted file mode 100644 index 4bedd2b5..00000000 --- a/public/main/os/sbi/constant.SBI_REMOTE_SFENCE_VMA.html +++ /dev/null @@ -1,6 +0,0 @@ -SBI_REMOTE_SFENCE_VMA in os::sbi - Rust -
    const SBI_REMOTE_SFENCE_VMA: usize = 6;
    - \ No newline at end of file diff --git a/public/main/os/sbi/constant.SBI_REMOTE_SFENCE_VMA_ASID.html b/public/main/os/sbi/constant.SBI_REMOTE_SFENCE_VMA_ASID.html deleted file mode 100644 index 06c69ce2..00000000 --- a/public/main/os/sbi/constant.SBI_REMOTE_SFENCE_VMA_ASID.html +++ /dev/null @@ -1,6 +0,0 @@ -SBI_REMOTE_SFENCE_VMA_ASID in os::sbi - Rust -
    const SBI_REMOTE_SFENCE_VMA_ASID: usize = 7;
    - \ No newline at end of file diff --git a/public/main/os/sbi/constant.SBI_SEND_IPI.html b/public/main/os/sbi/constant.SBI_SEND_IPI.html deleted file mode 100644 index a3da3df2..00000000 --- a/public/main/os/sbi/constant.SBI_SEND_IPI.html +++ /dev/null @@ -1,6 +0,0 @@ -SBI_SEND_IPI in os::sbi - Rust -
    -

    Constant os::sbi::SBI_SEND_IPI

    source · []
    const SBI_SEND_IPI: usize = 4;
    - \ No newline at end of file diff --git a/public/main/os/sbi/constant.SBI_SET_TIMER.html b/public/main/os/sbi/constant.SBI_SET_TIMER.html deleted file mode 100644 index b8c22ab8..00000000 --- a/public/main/os/sbi/constant.SBI_SET_TIMER.html +++ /dev/null @@ -1,6 +0,0 @@ -SBI_SET_TIMER in os::sbi - Rust -
    -

    Constant os::sbi::SBI_SET_TIMER

    source · []
    const SBI_SET_TIMER: usize = 0;
    - \ No newline at end of file diff --git a/public/main/os/sbi/constant.SBI_SHUTDOWN.html b/public/main/os/sbi/constant.SBI_SHUTDOWN.html deleted file mode 100644 index 1019984f..00000000 --- a/public/main/os/sbi/constant.SBI_SHUTDOWN.html +++ /dev/null @@ -1,6 +0,0 @@ -SBI_SHUTDOWN in os::sbi - Rust -
    -

    Constant os::sbi::SBI_SHUTDOWN

    source · []
    const SBI_SHUTDOWN: usize = 8;
    - \ No newline at end of file diff --git a/public/main/os/sbi/fn.console_getchar.html b/public/main/os/sbi/fn.console_getchar.html deleted file mode 100644 index 877c7578..00000000 --- a/public/main/os/sbi/fn.console_getchar.html +++ /dev/null @@ -1,6 +0,0 @@ -console_getchar in os::sbi - Rust -
    pub fn console_getchar() -> usize
    - \ No newline at end of file diff --git a/public/main/os/sbi/fn.console_putchar.html b/public/main/os/sbi/fn.console_putchar.html deleted file mode 100644 index d1f365ff..00000000 --- a/public/main/os/sbi/fn.console_putchar.html +++ /dev/null @@ -1,6 +0,0 @@ -console_putchar in os::sbi - Rust -
    pub fn console_putchar(c: usize)
    - \ No newline at end of file diff --git a/public/main/os/sbi/fn.sbi_call.html b/public/main/os/sbi/fn.sbi_call.html deleted file mode 100644 index 00731305..00000000 --- a/public/main/os/sbi/fn.sbi_call.html +++ /dev/null @@ -1,6 +0,0 @@ -sbi_call in os::sbi - Rust -
    -

    Function os::sbi::sbi_call

    source · []
    fn sbi_call(which: usize, arg0: usize, arg1: usize, arg2: usize) -> usize
    - \ No newline at end of file diff --git a/public/main/os/sbi/fn.set_timer.html b/public/main/os/sbi/fn.set_timer.html deleted file mode 100644 index baa87c5b..00000000 --- a/public/main/os/sbi/fn.set_timer.html +++ /dev/null @@ -1,6 +0,0 @@ -set_timer in os::sbi - Rust -
    -

    Function os::sbi::set_timer

    source · []
    pub fn set_timer(timer: usize)
    - \ No newline at end of file diff --git a/public/main/os/sbi/fn.shutdown.html b/public/main/os/sbi/fn.shutdown.html deleted file mode 100644 index 14b7a2d8..00000000 --- a/public/main/os/sbi/fn.shutdown.html +++ /dev/null @@ -1,6 +0,0 @@ -shutdown in os::sbi - Rust -
    -

    Function os::sbi::shutdown

    source · []
    pub fn shutdown() -> !
    - \ No newline at end of file diff --git a/public/main/os/sbi/index.html b/public/main/os/sbi/index.html deleted file mode 100644 index 8c090e8c..00000000 --- a/public/main/os/sbi/index.html +++ /dev/null @@ -1,8 +0,0 @@ -os::sbi - Rust -
    - \ No newline at end of file diff --git a/public/main/os/sbi/sidebar-items.js b/public/main/os/sbi/sidebar-items.js deleted file mode 100644 index 025cc5ad..00000000 --- a/public/main/os/sbi/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"constant":[["SBI_CLEAR_IPI",""],["SBI_CONSOLE_GETCHAR",""],["SBI_CONSOLE_PUTCHAR",""],["SBI_REMOTE_FENCE_I",""],["SBI_REMOTE_SFENCE_VMA",""],["SBI_REMOTE_SFENCE_VMA_ASID",""],["SBI_SEND_IPI",""],["SBI_SET_TIMER",""],["SBI_SHUTDOWN",""]],"fn":[["console_getchar",""],["console_putchar",""],["sbi_call",""],["set_timer",""],["shutdown",""]]}); \ No newline at end of file diff --git a/public/main/os/sidebar-items.js b/public/main/os/sidebar-items.js deleted file mode 100644 index c6957c59..00000000 --- a/public/main/os/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["clear_bss",""],["rust_main",""]],"macro":[["print",""],["println",""]],"mod":[["board",""],["config",""],["console",""],["drivers",""],["fs",""],["lang_items",""],["mm",""],["sbi",""],["sync",""],["syscall",""],["task",""],["timer",""],["trap",""]],"struct":[["DEV_NON_BLOCKING_ACCESS",""]]}); \ No newline at end of file diff --git a/public/main/os/struct.DEV_NON_BLOCKING_ACCESS.html b/public/main/os/struct.DEV_NON_BLOCKING_ACCESS.html deleted file mode 100644 index bdbf1e9c..00000000 --- a/public/main/os/struct.DEV_NON_BLOCKING_ACCESS.html +++ /dev/null @@ -1,20 +0,0 @@ -DEV_NON_BLOCKING_ACCESS in os - Rust -
    pub struct DEV_NON_BLOCKING_ACCESS {
    -    pub(crate) __private_field: (),
    -}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPIntrFreeCell<bool>>

    Panic if the data has been borrowed.

    -

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/sync/condvar/index.html b/public/main/os/sync/condvar/index.html deleted file mode 100644 index af3076d6..00000000 --- a/public/main/os/sync/condvar/index.html +++ /dev/null @@ -1,7 +0,0 @@ -os::sync::condvar - Rust -
    - \ No newline at end of file diff --git a/public/main/os/sync/condvar/sidebar-items.js b/public/main/os/sync/condvar/sidebar-items.js deleted file mode 100644 index 9c6e0531..00000000 --- a/public/main/os/sync/condvar/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"struct":[["Condvar",""],["CondvarInner",""]]}); \ No newline at end of file diff --git a/public/main/os/sync/condvar/struct.Condvar.html b/public/main/os/sync/condvar/struct.Condvar.html deleted file mode 100644 index 3cc63d77..00000000 --- a/public/main/os/sync/condvar/struct.Condvar.html +++ /dev/null @@ -1,17 +0,0 @@ -Condvar in os::sync::condvar - Rust -
    pub struct Condvar {
    -    pub inner: UPIntrFreeCell<CondvarInner>,
    -}

    Fields

    inner: UPIntrFreeCell<CondvarInner>

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/sync/condvar/struct.CondvarInner.html b/public/main/os/sync/condvar/struct.CondvarInner.html deleted file mode 100644 index f1dd3996..00000000 --- a/public/main/os/sync/condvar/struct.CondvarInner.html +++ /dev/null @@ -1,17 +0,0 @@ -CondvarInner in os::sync::condvar - Rust -
    pub struct CondvarInner {
    -    pub wait_queue: VecDeque<Arc<TaskControlBlock>>,
    -}

    Fields

    wait_queue: VecDeque<Arc<TaskControlBlock>>

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/sync/index.html b/public/main/os/sync/index.html deleted file mode 100644 index 3d630dd9..00000000 --- a/public/main/os/sync/index.html +++ /dev/null @@ -1,8 +0,0 @@ -os::sync - Rust -
    -

    Module os::sync

    source · []

    Re-exports

    -
    pub use condvar::Condvar;
    pub use mutex::Mutex;
    pub use mutex::MutexBlocking;
    pub use mutex::MutexSpin;
    pub use semaphore::Semaphore;
    pub use up::UPIntrFreeCell;
    pub use up::UPIntrRefMut;

    Modules

    -
    - \ No newline at end of file diff --git a/public/main/os/sync/mutex/index.html b/public/main/os/sync/mutex/index.html deleted file mode 100644 index 5a6bd965..00000000 --- a/public/main/os/sync/mutex/index.html +++ /dev/null @@ -1,8 +0,0 @@ -os::sync::mutex - Rust -
    - \ No newline at end of file diff --git a/public/main/os/sync/mutex/sidebar-items.js b/public/main/os/sync/mutex/sidebar-items.js deleted file mode 100644 index bcf7fb56..00000000 --- a/public/main/os/sync/mutex/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"struct":[["MutexBlocking",""],["MutexBlockingInner",""],["MutexSpin",""]],"trait":[["Mutex",""]]}); \ No newline at end of file diff --git a/public/main/os/sync/mutex/struct.MutexBlocking.html b/public/main/os/sync/mutex/struct.MutexBlocking.html deleted file mode 100644 index b2718350..00000000 --- a/public/main/os/sync/mutex/struct.MutexBlocking.html +++ /dev/null @@ -1,17 +0,0 @@ -MutexBlocking in os::sync::mutex - Rust -
    pub struct MutexBlocking {
    -    inner: UPIntrFreeCell<MutexBlockingInner>,
    -}

    Fields

    inner: UPIntrFreeCell<MutexBlockingInner>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/sync/mutex/struct.MutexBlockingInner.html b/public/main/os/sync/mutex/struct.MutexBlockingInner.html deleted file mode 100644 index 374cd9d3..00000000 --- a/public/main/os/sync/mutex/struct.MutexBlockingInner.html +++ /dev/null @@ -1,18 +0,0 @@ -MutexBlockingInner in os::sync::mutex - Rust -
    pub struct MutexBlockingInner {
    -    locked: bool,
    -    wait_queue: VecDeque<Arc<TaskControlBlock>>,
    -}

    Fields

    locked: boolwait_queue: VecDeque<Arc<TaskControlBlock>>

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/sync/mutex/struct.MutexSpin.html b/public/main/os/sync/mutex/struct.MutexSpin.html deleted file mode 100644 index 38c6d73d..00000000 --- a/public/main/os/sync/mutex/struct.MutexSpin.html +++ /dev/null @@ -1,17 +0,0 @@ -MutexSpin in os::sync::mutex - Rust -
    pub struct MutexSpin {
    -    locked: UPIntrFreeCell<bool>,
    -}

    Fields

    locked: UPIntrFreeCell<bool>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/sync/mutex/trait.Mutex.html b/public/main/os/sync/mutex/trait.Mutex.html deleted file mode 100644 index dfd4727c..00000000 --- a/public/main/os/sync/mutex/trait.Mutex.html +++ /dev/null @@ -1,9 +0,0 @@ -Mutex in os::sync::mutex - Rust -
    -

    Trait os::sync::mutex::Mutex

    source · []
    pub trait Mutex: Sync + Send {
    -    fn lock(&self);
    -
    fn unlock(&self); -}

    Required methods

    Implementors

    - \ No newline at end of file diff --git a/public/main/os/sync/semaphore/index.html b/public/main/os/sync/semaphore/index.html deleted file mode 100644 index ca290fe6..00000000 --- a/public/main/os/sync/semaphore/index.html +++ /dev/null @@ -1,7 +0,0 @@ -os::sync::semaphore - Rust -
    - \ No newline at end of file diff --git a/public/main/os/sync/semaphore/sidebar-items.js b/public/main/os/sync/semaphore/sidebar-items.js deleted file mode 100644 index aab70692..00000000 --- a/public/main/os/sync/semaphore/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"struct":[["Semaphore",""],["SemaphoreInner",""]]}); \ No newline at end of file diff --git a/public/main/os/sync/semaphore/struct.Semaphore.html b/public/main/os/sync/semaphore/struct.Semaphore.html deleted file mode 100644 index 3b6d387c..00000000 --- a/public/main/os/sync/semaphore/struct.Semaphore.html +++ /dev/null @@ -1,17 +0,0 @@ -Semaphore in os::sync::semaphore - Rust -
    pub struct Semaphore {
    -    pub inner: UPIntrFreeCell<SemaphoreInner>,
    -}

    Fields

    inner: UPIntrFreeCell<SemaphoreInner>

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/sync/semaphore/struct.SemaphoreInner.html b/public/main/os/sync/semaphore/struct.SemaphoreInner.html deleted file mode 100644 index b8fcc22b..00000000 --- a/public/main/os/sync/semaphore/struct.SemaphoreInner.html +++ /dev/null @@ -1,18 +0,0 @@ -SemaphoreInner in os::sync::semaphore - Rust -
    pub struct SemaphoreInner {
    -    pub count: isize,
    -    pub wait_queue: VecDeque<Arc<TaskControlBlock>>,
    -}

    Fields

    count: isizewait_queue: VecDeque<Arc<TaskControlBlock>>

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/sync/sidebar-items.js b/public/main/os/sync/sidebar-items.js deleted file mode 100644 index 246433bd..00000000 --- a/public/main/os/sync/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"mod":[["condvar",""],["mutex",""],["semaphore",""],["up",""]]}); \ No newline at end of file diff --git a/public/main/os/sync/up/index.html b/public/main/os/sync/up/index.html deleted file mode 100644 index 6fbb0356..00000000 --- a/public/main/os/sync/up/index.html +++ /dev/null @@ -1,7 +0,0 @@ -os::sync::up - Rust -
    - \ No newline at end of file diff --git a/public/main/os/sync/up/sidebar-items.js b/public/main/os/sync/up/sidebar-items.js deleted file mode 100644 index e903a9f6..00000000 --- a/public/main/os/sync/up/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"struct":[["INTR_MASKING_INFO",""],["IntrMaskingInfo",""],["UPIntrFreeCell",""],["UPIntrRefMut",""],["UPSafeCellRaw",""]]}); \ No newline at end of file diff --git a/public/main/os/sync/up/struct.INTR_MASKING_INFO.html b/public/main/os/sync/up/struct.INTR_MASKING_INFO.html deleted file mode 100644 index 497d74f5..00000000 --- a/public/main/os/sync/up/struct.INTR_MASKING_INFO.html +++ /dev/null @@ -1,19 +0,0 @@ -INTR_MASKING_INFO in os::sync::up - Rust -
    struct INTR_MASKING_INFO {
    -    __private_field: (),
    -}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPSafeCellRaw<IntrMaskingInfo>>

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/sync/up/struct.IntrMaskingInfo.html b/public/main/os/sync/up/struct.IntrMaskingInfo.html deleted file mode 100644 index 22e54718..00000000 --- a/public/main/os/sync/up/struct.IntrMaskingInfo.html +++ /dev/null @@ -1,18 +0,0 @@ -IntrMaskingInfo in os::sync::up - Rust -
    pub struct IntrMaskingInfo {
    -    nested_level: usize,
    -    sie_before_masking: bool,
    -}

    Fields

    nested_level: usizesie_before_masking: bool

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/sync/up/struct.UPIntrFreeCell.html b/public/main/os/sync/up/struct.UPIntrFreeCell.html deleted file mode 100644 index 0e5ba3f1..00000000 --- a/public/main/os/sync/up/struct.UPIntrFreeCell.html +++ /dev/null @@ -1,19 +0,0 @@ -UPIntrFreeCell in os::sync::up - Rust -
    pub struct UPIntrFreeCell<T> {
    -    inner: RefCell<T>,
    -}

    Fields

    inner: RefCell<T>

    inner data

    -

    Implementations

    Panic if the data has been borrowed.

    -

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/sync/up/struct.UPIntrRefMut.html b/public/main/os/sync/up/struct.UPIntrRefMut.html deleted file mode 100644 index 42c933bb..00000000 --- a/public/main/os/sync/up/struct.UPIntrRefMut.html +++ /dev/null @@ -1,19 +0,0 @@ -UPIntrRefMut in os::sync::up - Rust -
    pub struct UPIntrRefMut<'a, T>(Option<RefMut<'a, T>>);

    Tuple Fields

    0: Option<RefMut<'a, T>>

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Mutably dereferences the value.

    -

    Executes the destructor for this type. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/sync/up/struct.UPSafeCellRaw.html b/public/main/os/sync/up/struct.UPSafeCellRaw.html deleted file mode 100644 index 1b75faa6..00000000 --- a/public/main/os/sync/up/struct.UPSafeCellRaw.html +++ /dev/null @@ -1,17 +0,0 @@ -UPSafeCellRaw in os::sync::up - Rust -
    pub struct UPSafeCellRaw<T> {
    -    inner: UnsafeCell<T>,
    -}

    Fields

    inner: UnsafeCell<T>

    Implementations

    Trait Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_CLOSE.html b/public/main/os/syscall/constant.SYSCALL_CLOSE.html deleted file mode 100644 index c189a9c2..00000000 --- a/public/main/os/syscall/constant.SYSCALL_CLOSE.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_CLOSE in os::syscall - Rust -
    const SYSCALL_CLOSE: usize = 57;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_CONDVAR_CREATE.html b/public/main/os/syscall/constant.SYSCALL_CONDVAR_CREATE.html deleted file mode 100644 index 81a37d17..00000000 --- a/public/main/os/syscall/constant.SYSCALL_CONDVAR_CREATE.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_CONDVAR_CREATE in os::syscall - Rust -
    const SYSCALL_CONDVAR_CREATE: usize = 1030;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_CONDVAR_SIGNAL.html b/public/main/os/syscall/constant.SYSCALL_CONDVAR_SIGNAL.html deleted file mode 100644 index de1ca4a3..00000000 --- a/public/main/os/syscall/constant.SYSCALL_CONDVAR_SIGNAL.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_CONDVAR_SIGNAL in os::syscall - Rust -
    const SYSCALL_CONDVAR_SIGNAL: usize = 1031;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_CONDVAR_WAIT.html b/public/main/os/syscall/constant.SYSCALL_CONDVAR_WAIT.html deleted file mode 100644 index 95304d26..00000000 --- a/public/main/os/syscall/constant.SYSCALL_CONDVAR_WAIT.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_CONDVAR_WAIT in os::syscall - Rust -
    const SYSCALL_CONDVAR_WAIT: usize = 1032;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_DUP.html b/public/main/os/syscall/constant.SYSCALL_DUP.html deleted file mode 100644 index 4a3ed056..00000000 --- a/public/main/os/syscall/constant.SYSCALL_DUP.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_DUP in os::syscall - Rust -
    const SYSCALL_DUP: usize = 24;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_EXEC.html b/public/main/os/syscall/constant.SYSCALL_EXEC.html deleted file mode 100644 index ca11f1f5..00000000 --- a/public/main/os/syscall/constant.SYSCALL_EXEC.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_EXEC in os::syscall - Rust -
    const SYSCALL_EXEC: usize = 221;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_EXIT.html b/public/main/os/syscall/constant.SYSCALL_EXIT.html deleted file mode 100644 index 4ab8b379..00000000 --- a/public/main/os/syscall/constant.SYSCALL_EXIT.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_EXIT in os::syscall - Rust -
    const SYSCALL_EXIT: usize = 93;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_FORK.html b/public/main/os/syscall/constant.SYSCALL_FORK.html deleted file mode 100644 index a60495ae..00000000 --- a/public/main/os/syscall/constant.SYSCALL_FORK.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_FORK in os::syscall - Rust -
    const SYSCALL_FORK: usize = 220;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_GETPID.html b/public/main/os/syscall/constant.SYSCALL_GETPID.html deleted file mode 100644 index 3b32faa9..00000000 --- a/public/main/os/syscall/constant.SYSCALL_GETPID.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_GETPID in os::syscall - Rust -
    const SYSCALL_GETPID: usize = 172;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_GETTID.html b/public/main/os/syscall/constant.SYSCALL_GETTID.html deleted file mode 100644 index ca733626..00000000 --- a/public/main/os/syscall/constant.SYSCALL_GETTID.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_GETTID in os::syscall - Rust -
    const SYSCALL_GETTID: usize = 1001;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_GET_TIME.html b/public/main/os/syscall/constant.SYSCALL_GET_TIME.html deleted file mode 100644 index 343a08f8..00000000 --- a/public/main/os/syscall/constant.SYSCALL_GET_TIME.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_GET_TIME in os::syscall - Rust -
    const SYSCALL_GET_TIME: usize = 169;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_KILL.html b/public/main/os/syscall/constant.SYSCALL_KILL.html deleted file mode 100644 index bf5ec3eb..00000000 --- a/public/main/os/syscall/constant.SYSCALL_KILL.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_KILL in os::syscall - Rust -
    const SYSCALL_KILL: usize = 129;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_MUTEX_CREATE.html b/public/main/os/syscall/constant.SYSCALL_MUTEX_CREATE.html deleted file mode 100644 index 6ed93ace..00000000 --- a/public/main/os/syscall/constant.SYSCALL_MUTEX_CREATE.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_MUTEX_CREATE in os::syscall - Rust -
    const SYSCALL_MUTEX_CREATE: usize = 1010;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_MUTEX_LOCK.html b/public/main/os/syscall/constant.SYSCALL_MUTEX_LOCK.html deleted file mode 100644 index 3f352e9d..00000000 --- a/public/main/os/syscall/constant.SYSCALL_MUTEX_LOCK.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_MUTEX_LOCK in os::syscall - Rust -
    const SYSCALL_MUTEX_LOCK: usize = 1011;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_MUTEX_UNLOCK.html b/public/main/os/syscall/constant.SYSCALL_MUTEX_UNLOCK.html deleted file mode 100644 index 074de3fe..00000000 --- a/public/main/os/syscall/constant.SYSCALL_MUTEX_UNLOCK.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_MUTEX_UNLOCK in os::syscall - Rust -
    const SYSCALL_MUTEX_UNLOCK: usize = 1012;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_OPEN.html b/public/main/os/syscall/constant.SYSCALL_OPEN.html deleted file mode 100644 index 6db5ddbd..00000000 --- a/public/main/os/syscall/constant.SYSCALL_OPEN.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_OPEN in os::syscall - Rust -
    const SYSCALL_OPEN: usize = 56;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_PIPE.html b/public/main/os/syscall/constant.SYSCALL_PIPE.html deleted file mode 100644 index e92c2618..00000000 --- a/public/main/os/syscall/constant.SYSCALL_PIPE.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_PIPE in os::syscall - Rust -
    const SYSCALL_PIPE: usize = 59;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_READ.html b/public/main/os/syscall/constant.SYSCALL_READ.html deleted file mode 100644 index 028c955f..00000000 --- a/public/main/os/syscall/constant.SYSCALL_READ.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_READ in os::syscall - Rust -
    const SYSCALL_READ: usize = 63;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_SEMAPHORE_CREATE.html b/public/main/os/syscall/constant.SYSCALL_SEMAPHORE_CREATE.html deleted file mode 100644 index 42485644..00000000 --- a/public/main/os/syscall/constant.SYSCALL_SEMAPHORE_CREATE.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_SEMAPHORE_CREATE in os::syscall - Rust -
    const SYSCALL_SEMAPHORE_CREATE: usize = 1020;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_SEMAPHORE_DOWN.html b/public/main/os/syscall/constant.SYSCALL_SEMAPHORE_DOWN.html deleted file mode 100644 index e7b97375..00000000 --- a/public/main/os/syscall/constant.SYSCALL_SEMAPHORE_DOWN.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_SEMAPHORE_DOWN in os::syscall - Rust -
    const SYSCALL_SEMAPHORE_DOWN: usize = 1022;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_SEMAPHORE_UP.html b/public/main/os/syscall/constant.SYSCALL_SEMAPHORE_UP.html deleted file mode 100644 index ce325bb6..00000000 --- a/public/main/os/syscall/constant.SYSCALL_SEMAPHORE_UP.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_SEMAPHORE_UP in os::syscall - Rust -
    const SYSCALL_SEMAPHORE_UP: usize = 1021;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_SLEEP.html b/public/main/os/syscall/constant.SYSCALL_SLEEP.html deleted file mode 100644 index e1e9e0bc..00000000 --- a/public/main/os/syscall/constant.SYSCALL_SLEEP.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_SLEEP in os::syscall - Rust -
    const SYSCALL_SLEEP: usize = 101;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_THREAD_CREATE.html b/public/main/os/syscall/constant.SYSCALL_THREAD_CREATE.html deleted file mode 100644 index 2fe08c30..00000000 --- a/public/main/os/syscall/constant.SYSCALL_THREAD_CREATE.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_THREAD_CREATE in os::syscall - Rust -
    const SYSCALL_THREAD_CREATE: usize = 1000;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_WAITPID.html b/public/main/os/syscall/constant.SYSCALL_WAITPID.html deleted file mode 100644 index d902aa1a..00000000 --- a/public/main/os/syscall/constant.SYSCALL_WAITPID.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_WAITPID in os::syscall - Rust -
    const SYSCALL_WAITPID: usize = 260;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_WAITTID.html b/public/main/os/syscall/constant.SYSCALL_WAITTID.html deleted file mode 100644 index c259da17..00000000 --- a/public/main/os/syscall/constant.SYSCALL_WAITTID.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_WAITTID in os::syscall - Rust -
    const SYSCALL_WAITTID: usize = 1002;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_WRITE.html b/public/main/os/syscall/constant.SYSCALL_WRITE.html deleted file mode 100644 index 73f23b78..00000000 --- a/public/main/os/syscall/constant.SYSCALL_WRITE.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_WRITE in os::syscall - Rust -
    const SYSCALL_WRITE: usize = 64;
    - \ No newline at end of file diff --git a/public/main/os/syscall/constant.SYSCALL_YIELD.html b/public/main/os/syscall/constant.SYSCALL_YIELD.html deleted file mode 100644 index 45bf9297..00000000 --- a/public/main/os/syscall/constant.SYSCALL_YIELD.html +++ /dev/null @@ -1,6 +0,0 @@ -SYSCALL_YIELD in os::syscall - Rust -
    const SYSCALL_YIELD: usize = 124;
    - \ No newline at end of file diff --git a/public/main/os/syscall/fn.syscall.html b/public/main/os/syscall/fn.syscall.html deleted file mode 100644 index fd17cd3b..00000000 --- a/public/main/os/syscall/fn.syscall.html +++ /dev/null @@ -1,6 +0,0 @@ -syscall in os::syscall - Rust -
    -

    Function os::syscall::syscall

    source · []
    pub fn syscall(syscall_id: usize, args: [usize; 3]) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/fs/fn.sys_close.html b/public/main/os/syscall/fs/fn.sys_close.html deleted file mode 100644 index 43b0efef..00000000 --- a/public/main/os/syscall/fs/fn.sys_close.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_close in os::syscall::fs - Rust -
    -

    Function os::syscall::fs::sys_close

    source · []
    pub fn sys_close(fd: usize) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/fs/fn.sys_dup.html b/public/main/os/syscall/fs/fn.sys_dup.html deleted file mode 100644 index d0b39347..00000000 --- a/public/main/os/syscall/fs/fn.sys_dup.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_dup in os::syscall::fs - Rust -
    -

    Function os::syscall::fs::sys_dup

    source · []
    pub fn sys_dup(fd: usize) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/fs/fn.sys_open.html b/public/main/os/syscall/fs/fn.sys_open.html deleted file mode 100644 index 3bc3a469..00000000 --- a/public/main/os/syscall/fs/fn.sys_open.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_open in os::syscall::fs - Rust -
    -

    Function os::syscall::fs::sys_open

    source · []
    pub fn sys_open(path: *const u8, flags: u32) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/fs/fn.sys_pipe.html b/public/main/os/syscall/fs/fn.sys_pipe.html deleted file mode 100644 index 57c88e7d..00000000 --- a/public/main/os/syscall/fs/fn.sys_pipe.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_pipe in os::syscall::fs - Rust -
    -

    Function os::syscall::fs::sys_pipe

    source · []
    pub fn sys_pipe(pipe: *mut usize) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/fs/fn.sys_read.html b/public/main/os/syscall/fs/fn.sys_read.html deleted file mode 100644 index b18050d3..00000000 --- a/public/main/os/syscall/fs/fn.sys_read.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_read in os::syscall::fs - Rust -
    -

    Function os::syscall::fs::sys_read

    source · []
    pub fn sys_read(fd: usize, buf: *const u8, len: usize) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/fs/fn.sys_write.html b/public/main/os/syscall/fs/fn.sys_write.html deleted file mode 100644 index 2bd61525..00000000 --- a/public/main/os/syscall/fs/fn.sys_write.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_write in os::syscall::fs - Rust -
    -

    Function os::syscall::fs::sys_write

    source · []
    pub fn sys_write(fd: usize, buf: *const u8, len: usize) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/fs/index.html b/public/main/os/syscall/fs/index.html deleted file mode 100644 index 4970c656..00000000 --- a/public/main/os/syscall/fs/index.html +++ /dev/null @@ -1,7 +0,0 @@ -os::syscall::fs - Rust -
    - \ No newline at end of file diff --git a/public/main/os/syscall/fs/sidebar-items.js b/public/main/os/syscall/fs/sidebar-items.js deleted file mode 100644 index ec5d581d..00000000 --- a/public/main/os/syscall/fs/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["sys_close",""],["sys_dup",""],["sys_open",""],["sys_pipe",""],["sys_read",""],["sys_write",""]]}); \ No newline at end of file diff --git a/public/main/os/syscall/index.html b/public/main/os/syscall/index.html deleted file mode 100644 index ff7db82c..00000000 --- a/public/main/os/syscall/index.html +++ /dev/null @@ -1,9 +0,0 @@ -os::syscall - Rust -
    - \ No newline at end of file diff --git a/public/main/os/syscall/process/fn.sys_exec.html b/public/main/os/syscall/process/fn.sys_exec.html deleted file mode 100644 index 25d4e70b..00000000 --- a/public/main/os/syscall/process/fn.sys_exec.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_exec in os::syscall::process - Rust -
    pub fn sys_exec(path: *const u8, args: *const usize) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/process/fn.sys_exit.html b/public/main/os/syscall/process/fn.sys_exit.html deleted file mode 100644 index 72a69ef6..00000000 --- a/public/main/os/syscall/process/fn.sys_exit.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_exit in os::syscall::process - Rust -
    pub fn sys_exit(exit_code: i32) -> !
    - \ No newline at end of file diff --git a/public/main/os/syscall/process/fn.sys_fork.html b/public/main/os/syscall/process/fn.sys_fork.html deleted file mode 100644 index e743f157..00000000 --- a/public/main/os/syscall/process/fn.sys_fork.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_fork in os::syscall::process - Rust -
    pub fn sys_fork() -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/process/fn.sys_get_time.html b/public/main/os/syscall/process/fn.sys_get_time.html deleted file mode 100644 index fcf96d5b..00000000 --- a/public/main/os/syscall/process/fn.sys_get_time.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_get_time in os::syscall::process - Rust -
    pub fn sys_get_time() -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/process/fn.sys_getpid.html b/public/main/os/syscall/process/fn.sys_getpid.html deleted file mode 100644 index 4ab103f0..00000000 --- a/public/main/os/syscall/process/fn.sys_getpid.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_getpid in os::syscall::process - Rust -
    pub fn sys_getpid() -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/process/fn.sys_kill.html b/public/main/os/syscall/process/fn.sys_kill.html deleted file mode 100644 index 08b9fd05..00000000 --- a/public/main/os/syscall/process/fn.sys_kill.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_kill in os::syscall::process - Rust -
    pub fn sys_kill(pid: usize, signal: u32) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/process/fn.sys_waitpid.html b/public/main/os/syscall/process/fn.sys_waitpid.html deleted file mode 100644 index edae9303..00000000 --- a/public/main/os/syscall/process/fn.sys_waitpid.html +++ /dev/null @@ -1,8 +0,0 @@ -sys_waitpid in os::syscall::process - Rust -
    pub fn sys_waitpid(pid: isize, exit_code_ptr: *mut i32) -> isize
    Expand description

    If there is not a child process whose pid is same as given, return -1. -Else if there is a child process but it is still running, return -2.

    -
    - \ No newline at end of file diff --git a/public/main/os/syscall/process/fn.sys_yield.html b/public/main/os/syscall/process/fn.sys_yield.html deleted file mode 100644 index 7a2409fb..00000000 --- a/public/main/os/syscall/process/fn.sys_yield.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_yield in os::syscall::process - Rust -
    pub fn sys_yield() -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/process/index.html b/public/main/os/syscall/process/index.html deleted file mode 100644 index 4780326d..00000000 --- a/public/main/os/syscall/process/index.html +++ /dev/null @@ -1,9 +0,0 @@ -os::syscall::process - Rust -
    -

    Module os::syscall::process

    source · []

    Functions

    -

    If there is not a child process whose pid is same as given, return -1. -Else if there is a child process but it is still running, return -2.

    -
    - \ No newline at end of file diff --git a/public/main/os/syscall/process/sidebar-items.js b/public/main/os/syscall/process/sidebar-items.js deleted file mode 100644 index df2652b3..00000000 --- a/public/main/os/syscall/process/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["sys_exec",""],["sys_exit",""],["sys_fork",""],["sys_get_time",""],["sys_getpid",""],["sys_kill",""],["sys_waitpid","If there is not a child process whose pid is same as given, return -1. Else if there is a child process but it is still running, return -2."],["sys_yield",""]]}); \ No newline at end of file diff --git a/public/main/os/syscall/sidebar-items.js b/public/main/os/syscall/sidebar-items.js deleted file mode 100644 index ca209447..00000000 --- a/public/main/os/syscall/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"constant":[["SYSCALL_CLOSE",""],["SYSCALL_CONDVAR_CREATE",""],["SYSCALL_CONDVAR_SIGNAL",""],["SYSCALL_CONDVAR_WAIT",""],["SYSCALL_DUP",""],["SYSCALL_EXEC",""],["SYSCALL_EXIT",""],["SYSCALL_FORK",""],["SYSCALL_GETPID",""],["SYSCALL_GETTID",""],["SYSCALL_GET_TIME",""],["SYSCALL_KILL",""],["SYSCALL_MUTEX_CREATE",""],["SYSCALL_MUTEX_LOCK",""],["SYSCALL_MUTEX_UNLOCK",""],["SYSCALL_OPEN",""],["SYSCALL_PIPE",""],["SYSCALL_READ",""],["SYSCALL_SEMAPHORE_CREATE",""],["SYSCALL_SEMAPHORE_DOWN",""],["SYSCALL_SEMAPHORE_UP",""],["SYSCALL_SLEEP",""],["SYSCALL_THREAD_CREATE",""],["SYSCALL_WAITPID",""],["SYSCALL_WAITTID",""],["SYSCALL_WRITE",""],["SYSCALL_YIELD",""]],"fn":[["syscall",""]],"mod":[["fs",""],["process",""],["sync",""],["thread",""]]}); \ No newline at end of file diff --git a/public/main/os/syscall/sync/fn.sys_condvar_create.html b/public/main/os/syscall/sync/fn.sys_condvar_create.html deleted file mode 100644 index 221b0c76..00000000 --- a/public/main/os/syscall/sync/fn.sys_condvar_create.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_condvar_create in os::syscall::sync - Rust -
    pub fn sys_condvar_create(_arg: usize) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/sync/fn.sys_condvar_signal.html b/public/main/os/syscall/sync/fn.sys_condvar_signal.html deleted file mode 100644 index f944c3ec..00000000 --- a/public/main/os/syscall/sync/fn.sys_condvar_signal.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_condvar_signal in os::syscall::sync - Rust -
    pub fn sys_condvar_signal(condvar_id: usize) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/sync/fn.sys_condvar_wait.html b/public/main/os/syscall/sync/fn.sys_condvar_wait.html deleted file mode 100644 index fde84215..00000000 --- a/public/main/os/syscall/sync/fn.sys_condvar_wait.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_condvar_wait in os::syscall::sync - Rust -
    pub fn sys_condvar_wait(condvar_id: usize, mutex_id: usize) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/sync/fn.sys_mutex_create.html b/public/main/os/syscall/sync/fn.sys_mutex_create.html deleted file mode 100644 index 723f7cf5..00000000 --- a/public/main/os/syscall/sync/fn.sys_mutex_create.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_mutex_create in os::syscall::sync - Rust -
    pub fn sys_mutex_create(blocking: bool) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/sync/fn.sys_mutex_lock.html b/public/main/os/syscall/sync/fn.sys_mutex_lock.html deleted file mode 100644 index 15d64cba..00000000 --- a/public/main/os/syscall/sync/fn.sys_mutex_lock.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_mutex_lock in os::syscall::sync - Rust -
    pub fn sys_mutex_lock(mutex_id: usize) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/sync/fn.sys_mutex_unlock.html b/public/main/os/syscall/sync/fn.sys_mutex_unlock.html deleted file mode 100644 index e192e54a..00000000 --- a/public/main/os/syscall/sync/fn.sys_mutex_unlock.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_mutex_unlock in os::syscall::sync - Rust -
    pub fn sys_mutex_unlock(mutex_id: usize) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/sync/fn.sys_semaphore_create.html b/public/main/os/syscall/sync/fn.sys_semaphore_create.html deleted file mode 100644 index 2370a3fa..00000000 --- a/public/main/os/syscall/sync/fn.sys_semaphore_create.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_semaphore_create in os::syscall::sync - Rust -
    pub fn sys_semaphore_create(res_count: usize) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/sync/fn.sys_semaphore_down.html b/public/main/os/syscall/sync/fn.sys_semaphore_down.html deleted file mode 100644 index 34a07f69..00000000 --- a/public/main/os/syscall/sync/fn.sys_semaphore_down.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_semaphore_down in os::syscall::sync - Rust -
    pub fn sys_semaphore_down(sem_id: usize) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/sync/fn.sys_semaphore_up.html b/public/main/os/syscall/sync/fn.sys_semaphore_up.html deleted file mode 100644 index 7281694d..00000000 --- a/public/main/os/syscall/sync/fn.sys_semaphore_up.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_semaphore_up in os::syscall::sync - Rust -
    pub fn sys_semaphore_up(sem_id: usize) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/sync/fn.sys_sleep.html b/public/main/os/syscall/sync/fn.sys_sleep.html deleted file mode 100644 index 8c7a649d..00000000 --- a/public/main/os/syscall/sync/fn.sys_sleep.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_sleep in os::syscall::sync - Rust -
    -

    Function os::syscall::sync::sys_sleep

    source · []
    pub fn sys_sleep(ms: usize) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/sync/index.html b/public/main/os/syscall/sync/index.html deleted file mode 100644 index 2dd5a615..00000000 --- a/public/main/os/syscall/sync/index.html +++ /dev/null @@ -1,7 +0,0 @@ -os::syscall::sync - Rust -
    - \ No newline at end of file diff --git a/public/main/os/syscall/sync/sidebar-items.js b/public/main/os/syscall/sync/sidebar-items.js deleted file mode 100644 index 40eb130e..00000000 --- a/public/main/os/syscall/sync/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["sys_condvar_create",""],["sys_condvar_signal",""],["sys_condvar_wait",""],["sys_mutex_create",""],["sys_mutex_lock",""],["sys_mutex_unlock",""],["sys_semaphore_create",""],["sys_semaphore_down",""],["sys_semaphore_up",""],["sys_sleep",""]]}); \ No newline at end of file diff --git a/public/main/os/syscall/thread/fn.sys_gettid.html b/public/main/os/syscall/thread/fn.sys_gettid.html deleted file mode 100644 index 1faf620b..00000000 --- a/public/main/os/syscall/thread/fn.sys_gettid.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_gettid in os::syscall::thread - Rust -
    pub fn sys_gettid() -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/thread/fn.sys_thread_create.html b/public/main/os/syscall/thread/fn.sys_thread_create.html deleted file mode 100644 index 59d09cec..00000000 --- a/public/main/os/syscall/thread/fn.sys_thread_create.html +++ /dev/null @@ -1,6 +0,0 @@ -sys_thread_create in os::syscall::thread - Rust -
    pub fn sys_thread_create(entry: usize, arg: usize) -> isize
    - \ No newline at end of file diff --git a/public/main/os/syscall/thread/fn.sys_waittid.html b/public/main/os/syscall/thread/fn.sys_waittid.html deleted file mode 100644 index b5168fa5..00000000 --- a/public/main/os/syscall/thread/fn.sys_waittid.html +++ /dev/null @@ -1,9 +0,0 @@ -sys_waittid in os::syscall::thread - Rust -
    pub fn sys_waittid(tid: usize) -> i32
    Expand description

    thread does not exist, return -1 -thread has not exited yet, return -2 -otherwise, return thread’s exit code

    -
    - \ No newline at end of file diff --git a/public/main/os/syscall/thread/index.html b/public/main/os/syscall/thread/index.html deleted file mode 100644 index 405da0ca..00000000 --- a/public/main/os/syscall/thread/index.html +++ /dev/null @@ -1,10 +0,0 @@ -os::syscall::thread - Rust -
    -

    Module os::syscall::thread

    source · []

    Functions

    -

    thread does not exist, return -1 -thread has not exited yet, return -2 -otherwise, return thread’s exit code

    -
    - \ No newline at end of file diff --git a/public/main/os/syscall/thread/sidebar-items.js b/public/main/os/syscall/thread/sidebar-items.js deleted file mode 100644 index 0f0b3557..00000000 --- a/public/main/os/syscall/thread/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["sys_gettid",""],["sys_thread_create",""],["sys_waittid","thread does not exist, return -1 thread has not exited yet, return -2 otherwise, return thread’s exit code"]]}); \ No newline at end of file diff --git a/public/main/os/task/context/index.html b/public/main/os/task/context/index.html deleted file mode 100644 index d9baf036..00000000 --- a/public/main/os/task/context/index.html +++ /dev/null @@ -1,7 +0,0 @@ -os::task::context - Rust -
    - \ No newline at end of file diff --git a/public/main/os/task/context/sidebar-items.js b/public/main/os/task/context/sidebar-items.js deleted file mode 100644 index 86a68385..00000000 --- a/public/main/os/task/context/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"struct":[["TaskContext",""]]}); \ No newline at end of file diff --git a/public/main/os/task/context/struct.TaskContext.html b/public/main/os/task/context/struct.TaskContext.html deleted file mode 100644 index 86c3149c..00000000 --- a/public/main/os/task/context/struct.TaskContext.html +++ /dev/null @@ -1,19 +0,0 @@ -TaskContext in os::task::context - Rust -
    #[repr(C)]
    pub struct TaskContext { - ra: usize, - sp: usize, - s: [usize; 12], -}

    Fields

    ra: usizesp: usizes: [usize; 12]

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/task/fn.add_initproc.html b/public/main/os/task/fn.add_initproc.html deleted file mode 100644 index 60130b97..00000000 --- a/public/main/os/task/fn.add_initproc.html +++ /dev/null @@ -1,6 +0,0 @@ -add_initproc in os::task - Rust -
    -

    Function os::task::add_initproc

    source · []
    pub fn add_initproc()
    - \ No newline at end of file diff --git a/public/main/os/task/fn.block_current_and_run_next.html b/public/main/os/task/fn.block_current_and_run_next.html deleted file mode 100644 index 9c0fca99..00000000 --- a/public/main/os/task/fn.block_current_and_run_next.html +++ /dev/null @@ -1,6 +0,0 @@ -block_current_and_run_next in os::task - Rust -
    pub fn block_current_and_run_next()
    - \ No newline at end of file diff --git a/public/main/os/task/fn.block_current_task.html b/public/main/os/task/fn.block_current_task.html deleted file mode 100644 index a3372fb4..00000000 --- a/public/main/os/task/fn.block_current_task.html +++ /dev/null @@ -1,7 +0,0 @@ -block_current_task in os::task - Rust -
    pub fn block_current_task() -> *mut TaskContext
    Expand description

    This function must be followed by a schedule

    -
    - \ No newline at end of file diff --git a/public/main/os/task/fn.check_signals_of_current.html b/public/main/os/task/fn.check_signals_of_current.html deleted file mode 100644 index ec12cbaf..00000000 --- a/public/main/os/task/fn.check_signals_of_current.html +++ /dev/null @@ -1,6 +0,0 @@ -check_signals_of_current in os::task - Rust -
    pub fn check_signals_of_current() -> Option<(i32, &'static str)>
    - \ No newline at end of file diff --git a/public/main/os/task/fn.current_add_signal.html b/public/main/os/task/fn.current_add_signal.html deleted file mode 100644 index 7208aaeb..00000000 --- a/public/main/os/task/fn.current_add_signal.html +++ /dev/null @@ -1,6 +0,0 @@ -current_add_signal in os::task - Rust -
    pub fn current_add_signal(signal: SignalFlags)
    - \ No newline at end of file diff --git a/public/main/os/task/fn.exit_current_and_run_next.html b/public/main/os/task/fn.exit_current_and_run_next.html deleted file mode 100644 index 4756e40c..00000000 --- a/public/main/os/task/fn.exit_current_and_run_next.html +++ /dev/null @@ -1,6 +0,0 @@ -exit_current_and_run_next in os::task - Rust -
    pub fn exit_current_and_run_next(exit_code: i32)
    - \ No newline at end of file diff --git a/public/main/os/task/fn.suspend_current_and_run_next.html b/public/main/os/task/fn.suspend_current_and_run_next.html deleted file mode 100644 index f0529347..00000000 --- a/public/main/os/task/fn.suspend_current_and_run_next.html +++ /dev/null @@ -1,6 +0,0 @@ -suspend_current_and_run_next in os::task - Rust -
    pub fn suspend_current_and_run_next()
    - \ No newline at end of file diff --git a/public/main/os/task/id/fn.kernel_stack_position.html b/public/main/os/task/id/fn.kernel_stack_position.html deleted file mode 100644 index 4d746b7c..00000000 --- a/public/main/os/task/id/fn.kernel_stack_position.html +++ /dev/null @@ -1,7 +0,0 @@ -kernel_stack_position in os::task::id - Rust -
    pub fn kernel_stack_position(kstack_id: usize) -> (usize, usize)
    Expand description

    Return (bottom, top) of a kernel stack in kernel space.

    -
    - \ No newline at end of file diff --git a/public/main/os/task/id/fn.kstack_alloc.html b/public/main/os/task/id/fn.kstack_alloc.html deleted file mode 100644 index ed362ad4..00000000 --- a/public/main/os/task/id/fn.kstack_alloc.html +++ /dev/null @@ -1,6 +0,0 @@ -kstack_alloc in os::task::id - Rust -
    -

    Function os::task::id::kstack_alloc

    source · []
    pub fn kstack_alloc() -> KernelStack
    - \ No newline at end of file diff --git a/public/main/os/task/id/fn.pid_alloc.html b/public/main/os/task/id/fn.pid_alloc.html deleted file mode 100644 index 9e76e058..00000000 --- a/public/main/os/task/id/fn.pid_alloc.html +++ /dev/null @@ -1,6 +0,0 @@ -pid_alloc in os::task::id - Rust -
    -

    Function os::task::id::pid_alloc

    source · []
    pub fn pid_alloc() -> PidHandle
    - \ No newline at end of file diff --git a/public/main/os/task/id/fn.trap_cx_bottom_from_tid.html b/public/main/os/task/id/fn.trap_cx_bottom_from_tid.html deleted file mode 100644 index 5e5d08cb..00000000 --- a/public/main/os/task/id/fn.trap_cx_bottom_from_tid.html +++ /dev/null @@ -1,6 +0,0 @@ -trap_cx_bottom_from_tid in os::task::id - Rust -
    fn trap_cx_bottom_from_tid(tid: usize) -> usize
    - \ No newline at end of file diff --git a/public/main/os/task/id/fn.ustack_bottom_from_tid.html b/public/main/os/task/id/fn.ustack_bottom_from_tid.html deleted file mode 100644 index 954d1cb8..00000000 --- a/public/main/os/task/id/fn.ustack_bottom_from_tid.html +++ /dev/null @@ -1,6 +0,0 @@ -ustack_bottom_from_tid in os::task::id - Rust -
    fn ustack_bottom_from_tid(ustack_base: usize, tid: usize) -> usize
    - \ No newline at end of file diff --git a/public/main/os/task/id/index.html b/public/main/os/task/id/index.html deleted file mode 100644 index 8cb66035..00000000 --- a/public/main/os/task/id/index.html +++ /dev/null @@ -1,9 +0,0 @@ -os::task::id - Rust -
    - \ No newline at end of file diff --git a/public/main/os/task/id/sidebar-items.js b/public/main/os/task/id/sidebar-items.js deleted file mode 100644 index 693c0c6e..00000000 --- a/public/main/os/task/id/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["kernel_stack_position","Return (bottom, top) of a kernel stack in kernel space."],["kstack_alloc",""],["pid_alloc",""],["trap_cx_bottom_from_tid",""],["ustack_bottom_from_tid",""]],"struct":[["KSTACK_ALLOCATOR",""],["KernelStack",""],["PID_ALLOCATOR",""],["PidHandle",""],["RecycleAllocator",""],["TaskUserRes",""]]}); \ No newline at end of file diff --git a/public/main/os/task/id/struct.KSTACK_ALLOCATOR.html b/public/main/os/task/id/struct.KSTACK_ALLOCATOR.html deleted file mode 100644 index f75edfd9..00000000 --- a/public/main/os/task/id/struct.KSTACK_ALLOCATOR.html +++ /dev/null @@ -1,20 +0,0 @@ -KSTACK_ALLOCATOR in os::task::id - Rust -
    struct KSTACK_ALLOCATOR {
    -    __private_field: (),
    -}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPIntrFreeCell<RecycleAllocator>>

    Panic if the data has been borrowed.

    -

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/task/id/struct.KernelStack.html b/public/main/os/task/id/struct.KernelStack.html deleted file mode 100644 index 2a4cf7f3..00000000 --- a/public/main/os/task/id/struct.KernelStack.html +++ /dev/null @@ -1,16 +0,0 @@ -KernelStack in os::task::id - Rust -
    -

    Struct os::task::id::KernelStack

    source · []
    pub struct KernelStack(pub usize);

    Tuple Fields

    0: usize

    Implementations

    Trait Implementations

    Executes the destructor for this type. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/task/id/struct.PID_ALLOCATOR.html b/public/main/os/task/id/struct.PID_ALLOCATOR.html deleted file mode 100644 index 33653525..00000000 --- a/public/main/os/task/id/struct.PID_ALLOCATOR.html +++ /dev/null @@ -1,20 +0,0 @@ -PID_ALLOCATOR in os::task::id - Rust -
    struct PID_ALLOCATOR {
    -    __private_field: (),
    -}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPIntrFreeCell<RecycleAllocator>>

    Panic if the data has been borrowed.

    -

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/task/id/struct.PidHandle.html b/public/main/os/task/id/struct.PidHandle.html deleted file mode 100644 index 9a28040a..00000000 --- a/public/main/os/task/id/struct.PidHandle.html +++ /dev/null @@ -1,16 +0,0 @@ -PidHandle in os::task::id - Rust -
    -

    Struct os::task::id::PidHandle

    source · []
    pub struct PidHandle(pub usize);

    Tuple Fields

    0: usize

    Trait Implementations

    Executes the destructor for this type. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/task/id/struct.RecycleAllocator.html b/public/main/os/task/id/struct.RecycleAllocator.html deleted file mode 100644 index d92efefd..00000000 --- a/public/main/os/task/id/struct.RecycleAllocator.html +++ /dev/null @@ -1,18 +0,0 @@ -RecycleAllocator in os::task::id - Rust -
    pub struct RecycleAllocator {
    -    current: usize,
    -    recycled: Vec<usize>,
    -}

    Fields

    current: usizerecycled: Vec<usize>

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/task/id/struct.TaskUserRes.html b/public/main/os/task/id/struct.TaskUserRes.html deleted file mode 100644 index 4e56392e..00000000 --- a/public/main/os/task/id/struct.TaskUserRes.html +++ /dev/null @@ -1,20 +0,0 @@ -TaskUserRes in os::task::id - Rust -
    -

    Struct os::task::id::TaskUserRes

    source · []
    pub struct TaskUserRes {
    -    pub tid: usize,
    -    pub ustack_base: usize,
    -    pub process: Weak<ProcessControlBlock>,
    -}

    Fields

    tid: usizeustack_base: usizeprocess: Weak<ProcessControlBlock>

    Implementations

    Trait Implementations

    Executes the destructor for this type. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/task/index.html b/public/main/os/task/index.html deleted file mode 100644 index d96ddbcc..00000000 --- a/public/main/os/task/index.html +++ /dev/null @@ -1,11 +0,0 @@ -os::task - Rust -
    -

    Module os::task

    source · []

    Re-exports

    -
    pub use context::TaskContext;
    pub use id::kstack_alloc;
    pub use id::pid_alloc;
    pub use id::KernelStack;
    pub use id::PidHandle;
    pub use manager::add_task;
    pub use manager::pid2process;
    pub use manager::remove_from_pid2process;
    pub use processor::current_kstack_top;
    pub use processor::current_process;
    pub use processor::current_task;
    pub use processor::current_trap_cx;
    pub use processor::current_trap_cx_user_va;
    pub use processor::current_user_token;
    pub use processor::run_tasks;
    pub use processor::schedule;
    pub use processor::take_current_task;
    pub use signal::SignalFlags;
    pub use task::TaskControlBlock;
    pub use task::TaskStatus;

    Modules

    -

    Structs

    -

    Functions

    -
    - \ No newline at end of file diff --git a/public/main/os/task/manager/fn.add_task.html b/public/main/os/task/manager/fn.add_task.html deleted file mode 100644 index d3aefe8a..00000000 --- a/public/main/os/task/manager/fn.add_task.html +++ /dev/null @@ -1,6 +0,0 @@ -add_task in os::task::manager - Rust -
    -

    Function os::task::manager::add_task

    source · []
    pub fn add_task(task: Arc<TaskControlBlock>)
    - \ No newline at end of file diff --git a/public/main/os/task/manager/fn.fetch_task.html b/public/main/os/task/manager/fn.fetch_task.html deleted file mode 100644 index 89e0c2af..00000000 --- a/public/main/os/task/manager/fn.fetch_task.html +++ /dev/null @@ -1,6 +0,0 @@ -fetch_task in os::task::manager - Rust -
    pub fn fetch_task() -> Option<Arc<TaskControlBlock>>
    - \ No newline at end of file diff --git a/public/main/os/task/manager/fn.insert_into_pid2process.html b/public/main/os/task/manager/fn.insert_into_pid2process.html deleted file mode 100644 index 88bc64fb..00000000 --- a/public/main/os/task/manager/fn.insert_into_pid2process.html +++ /dev/null @@ -1,6 +0,0 @@ -insert_into_pid2process in os::task::manager - Rust -
    pub fn insert_into_pid2process(pid: usize, process: Arc<ProcessControlBlock>)
    - \ No newline at end of file diff --git a/public/main/os/task/manager/fn.pid2process.html b/public/main/os/task/manager/fn.pid2process.html deleted file mode 100644 index f5deabaa..00000000 --- a/public/main/os/task/manager/fn.pid2process.html +++ /dev/null @@ -1,6 +0,0 @@ -pid2process in os::task::manager - Rust -
    pub fn pid2process(pid: usize) -> Option<Arc<ProcessControlBlock>>
    - \ No newline at end of file diff --git a/public/main/os/task/manager/fn.remove_from_pid2process.html b/public/main/os/task/manager/fn.remove_from_pid2process.html deleted file mode 100644 index 1ad81b39..00000000 --- a/public/main/os/task/manager/fn.remove_from_pid2process.html +++ /dev/null @@ -1,6 +0,0 @@ -remove_from_pid2process in os::task::manager - Rust -
    pub fn remove_from_pid2process(pid: usize)
    - \ No newline at end of file diff --git a/public/main/os/task/manager/index.html b/public/main/os/task/manager/index.html deleted file mode 100644 index a1a97bac..00000000 --- a/public/main/os/task/manager/index.html +++ /dev/null @@ -1,8 +0,0 @@ -os::task::manager - Rust -
    - \ No newline at end of file diff --git a/public/main/os/task/manager/sidebar-items.js b/public/main/os/task/manager/sidebar-items.js deleted file mode 100644 index faed1787..00000000 --- a/public/main/os/task/manager/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["add_task",""],["fetch_task",""],["insert_into_pid2process",""],["pid2process",""],["remove_from_pid2process",""]],"struct":[["PID2PCB",""],["TASK_MANAGER",""],["TaskManager",""]]}); \ No newline at end of file diff --git a/public/main/os/task/manager/struct.PID2PCB.html b/public/main/os/task/manager/struct.PID2PCB.html deleted file mode 100644 index 6caba82d..00000000 --- a/public/main/os/task/manager/struct.PID2PCB.html +++ /dev/null @@ -1,20 +0,0 @@ -PID2PCB in os::task::manager - Rust -
    pub struct PID2PCB {
    -    __private_field: (),
    -}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPIntrFreeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>>

    Panic if the data has been borrowed.

    -

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/task/manager/struct.TASK_MANAGER.html b/public/main/os/task/manager/struct.TASK_MANAGER.html deleted file mode 100644 index fa546224..00000000 --- a/public/main/os/task/manager/struct.TASK_MANAGER.html +++ /dev/null @@ -1,20 +0,0 @@ -TASK_MANAGER in os::task::manager - Rust -
    pub struct TASK_MANAGER {
    -    __private_field: (),
    -}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPIntrFreeCell<TaskManager>>

    Panic if the data has been borrowed.

    -

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/task/manager/struct.TaskManager.html b/public/main/os/task/manager/struct.TaskManager.html deleted file mode 100644 index 06461f22..00000000 --- a/public/main/os/task/manager/struct.TaskManager.html +++ /dev/null @@ -1,18 +0,0 @@ -TaskManager in os::task::manager - Rust -
    pub struct TaskManager {
    -    ready_queue: VecDeque<Arc<TaskControlBlock>>,
    -}

    Fields

    ready_queue: VecDeque<Arc<TaskControlBlock>>

    Implementations

    A simple FIFO scheduler.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/task/process/index.html b/public/main/os/task/process/index.html deleted file mode 100644 index d9b483f1..00000000 --- a/public/main/os/task/process/index.html +++ /dev/null @@ -1,7 +0,0 @@ -os::task::process - Rust -
    - \ No newline at end of file diff --git a/public/main/os/task/process/sidebar-items.js b/public/main/os/task/process/sidebar-items.js deleted file mode 100644 index bdfaf442..00000000 --- a/public/main/os/task/process/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"struct":[["ProcessControlBlock",""],["ProcessControlBlockInner",""]]}); \ No newline at end of file diff --git a/public/main/os/task/process/struct.ProcessControlBlock.html b/public/main/os/task/process/struct.ProcessControlBlock.html deleted file mode 100644 index 7df0b463..00000000 --- a/public/main/os/task/process/struct.ProcessControlBlock.html +++ /dev/null @@ -1,20 +0,0 @@ -ProcessControlBlock in os::task::process - Rust -
    pub struct ProcessControlBlock {
    -    pub pid: PidHandle,
    -    inner: UPIntrFreeCell<ProcessControlBlockInner>,
    -}

    Fields

    pid: PidHandleinner: UPIntrFreeCell<ProcessControlBlockInner>

    Implementations

    Only support processes with a single thread.

    -

    Only support processes with a single thread.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/task/process/struct.ProcessControlBlockInner.html b/public/main/os/task/process/struct.ProcessControlBlockInner.html deleted file mode 100644 index ea0fe5dc..00000000 --- a/public/main/os/task/process/struct.ProcessControlBlockInner.html +++ /dev/null @@ -1,28 +0,0 @@ -ProcessControlBlockInner in os::task::process - Rust -
    pub struct ProcessControlBlockInner {
    -    pub is_zombie: bool,
    -    pub memory_set: MemorySet,
    -    pub parent: Option<Weak<ProcessControlBlock>>,
    -    pub children: Vec<Arc<ProcessControlBlock>>,
    -    pub exit_code: i32,
    -    pub fd_table: Vec<Option<Arc<dyn File + Send + Sync>>>,
    -    pub signals: SignalFlags,
    -    pub tasks: Vec<Option<Arc<TaskControlBlock>>>,
    -    pub task_res_allocator: RecycleAllocator,
    -    pub mutex_list: Vec<Option<Arc<dyn Mutex>>>,
    -    pub semaphore_list: Vec<Option<Arc<Semaphore>>>,
    -    pub condvar_list: Vec<Option<Arc<Condvar>>>,
    -}

    Fields

    is_zombie: boolmemory_set: MemorySetparent: Option<Weak<ProcessControlBlock>>children: Vec<Arc<ProcessControlBlock>>exit_code: i32fd_table: Vec<Option<Arc<dyn File + Send + Sync>>>signals: SignalFlagstasks: Vec<Option<Arc<TaskControlBlock>>>task_res_allocator: RecycleAllocatormutex_list: Vec<Option<Arc<dyn Mutex>>>semaphore_list: Vec<Option<Arc<Semaphore>>>condvar_list: Vec<Option<Arc<Condvar>>>

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/task/processor/fn.current_kstack_top.html b/public/main/os/task/processor/fn.current_kstack_top.html deleted file mode 100644 index 40eded8e..00000000 --- a/public/main/os/task/processor/fn.current_kstack_top.html +++ /dev/null @@ -1,6 +0,0 @@ -current_kstack_top in os::task::processor - Rust -
    pub fn current_kstack_top() -> usize
    - \ No newline at end of file diff --git a/public/main/os/task/processor/fn.current_process.html b/public/main/os/task/processor/fn.current_process.html deleted file mode 100644 index 23a7086d..00000000 --- a/public/main/os/task/processor/fn.current_process.html +++ /dev/null @@ -1,6 +0,0 @@ -current_process in os::task::processor - Rust -
    pub fn current_process() -> Arc<ProcessControlBlock>
    - \ No newline at end of file diff --git a/public/main/os/task/processor/fn.current_task.html b/public/main/os/task/processor/fn.current_task.html deleted file mode 100644 index 20500a70..00000000 --- a/public/main/os/task/processor/fn.current_task.html +++ /dev/null @@ -1,6 +0,0 @@ -current_task in os::task::processor - Rust -
    pub fn current_task() -> Option<Arc<TaskControlBlock>>
    - \ No newline at end of file diff --git a/public/main/os/task/processor/fn.current_trap_cx.html b/public/main/os/task/processor/fn.current_trap_cx.html deleted file mode 100644 index 2667f697..00000000 --- a/public/main/os/task/processor/fn.current_trap_cx.html +++ /dev/null @@ -1,6 +0,0 @@ -current_trap_cx in os::task::processor - Rust -
    pub fn current_trap_cx() -> &'static mut TrapContext
    - \ No newline at end of file diff --git a/public/main/os/task/processor/fn.current_trap_cx_user_va.html b/public/main/os/task/processor/fn.current_trap_cx_user_va.html deleted file mode 100644 index e578012c..00000000 --- a/public/main/os/task/processor/fn.current_trap_cx_user_va.html +++ /dev/null @@ -1,6 +0,0 @@ -current_trap_cx_user_va in os::task::processor - Rust -
    pub fn current_trap_cx_user_va() -> usize
    - \ No newline at end of file diff --git a/public/main/os/task/processor/fn.current_user_token.html b/public/main/os/task/processor/fn.current_user_token.html deleted file mode 100644 index ae9c5d72..00000000 --- a/public/main/os/task/processor/fn.current_user_token.html +++ /dev/null @@ -1,6 +0,0 @@ -current_user_token in os::task::processor - Rust -
    pub fn current_user_token() -> usize
    - \ No newline at end of file diff --git a/public/main/os/task/processor/fn.run_tasks.html b/public/main/os/task/processor/fn.run_tasks.html deleted file mode 100644 index 38e3fd44..00000000 --- a/public/main/os/task/processor/fn.run_tasks.html +++ /dev/null @@ -1,6 +0,0 @@ -run_tasks in os::task::processor - Rust -
    pub fn run_tasks()
    - \ No newline at end of file diff --git a/public/main/os/task/processor/fn.schedule.html b/public/main/os/task/processor/fn.schedule.html deleted file mode 100644 index 1eefaa15..00000000 --- a/public/main/os/task/processor/fn.schedule.html +++ /dev/null @@ -1,6 +0,0 @@ -schedule in os::task::processor - Rust -
    pub fn schedule(switched_task_cx_ptr: *mut TaskContext)
    - \ No newline at end of file diff --git a/public/main/os/task/processor/fn.take_current_task.html b/public/main/os/task/processor/fn.take_current_task.html deleted file mode 100644 index 61e2d6fe..00000000 --- a/public/main/os/task/processor/fn.take_current_task.html +++ /dev/null @@ -1,6 +0,0 @@ -take_current_task in os::task::processor - Rust -
    pub fn take_current_task() -> Option<Arc<TaskControlBlock>>
    - \ No newline at end of file diff --git a/public/main/os/task/processor/index.html b/public/main/os/task/processor/index.html deleted file mode 100644 index f887712f..00000000 --- a/public/main/os/task/processor/index.html +++ /dev/null @@ -1,8 +0,0 @@ -os::task::processor - Rust -
    - \ No newline at end of file diff --git a/public/main/os/task/processor/sidebar-items.js b/public/main/os/task/processor/sidebar-items.js deleted file mode 100644 index b4f831f3..00000000 --- a/public/main/os/task/processor/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["current_kstack_top",""],["current_process",""],["current_task",""],["current_trap_cx",""],["current_trap_cx_user_va",""],["current_user_token",""],["run_tasks",""],["schedule",""],["take_current_task",""]],"struct":[["PROCESSOR",""],["Processor",""]]}); \ No newline at end of file diff --git a/public/main/os/task/processor/struct.PROCESSOR.html b/public/main/os/task/processor/struct.PROCESSOR.html deleted file mode 100644 index 81cb91a9..00000000 --- a/public/main/os/task/processor/struct.PROCESSOR.html +++ /dev/null @@ -1,20 +0,0 @@ -PROCESSOR in os::task::processor - Rust -
    pub struct PROCESSOR {
    -    __private_field: (),
    -}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPIntrFreeCell<Processor>>

    Panic if the data has been borrowed.

    -

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/task/processor/struct.Processor.html b/public/main/os/task/processor/struct.Processor.html deleted file mode 100644 index 9fc6cc87..00000000 --- a/public/main/os/task/processor/struct.Processor.html +++ /dev/null @@ -1,18 +0,0 @@ -Processor in os::task::processor - Rust -
    pub struct Processor {
    -    current: Option<Arc<TaskControlBlock>>,
    -    idle_task_cx: TaskContext,
    -}

    Fields

    current: Option<Arc<TaskControlBlock>>idle_task_cx: TaskContext

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/task/sidebar-items.js b/public/main/os/task/sidebar-items.js deleted file mode 100644 index b0eaa08b..00000000 --- a/public/main/os/task/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["add_initproc",""],["block_current_and_run_next",""],["block_current_task","This function must be followed by a schedule"],["check_signals_of_current",""],["current_add_signal",""],["exit_current_and_run_next",""],["suspend_current_and_run_next",""]],"mod":[["context",""],["id",""],["manager",""],["process",""],["processor",""],["signal",""],["switch",""],["task",""]],"struct":[["INITPROC",""]]}); \ No newline at end of file diff --git a/public/main/os/task/signal/index.html b/public/main/os/task/signal/index.html deleted file mode 100644 index b3346870..00000000 --- a/public/main/os/task/signal/index.html +++ /dev/null @@ -1,7 +0,0 @@ -os::task::signal - Rust -
    - \ No newline at end of file diff --git a/public/main/os/task/signal/sidebar-items.js b/public/main/os/task/signal/sidebar-items.js deleted file mode 100644 index e012b489..00000000 --- a/public/main/os/task/signal/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"struct":[["SignalFlags",""]]}); \ No newline at end of file diff --git a/public/main/os/task/signal/struct.SignalFlags.html b/public/main/os/task/signal/struct.SignalFlags.html deleted file mode 100644 index c994d201..00000000 --- a/public/main/os/task/signal/struct.SignalFlags.html +++ /dev/null @@ -1,119 +0,0 @@ -SignalFlags in os::task::signal - Rust -
    pub struct SignalFlags {
    -    bits: u32,
    -}

    Fields

    bits: u32

    Implementations

    Returns an empty set of flags.

    -

    Returns the set containing all flags.

    -

    Returns the raw value of the flags currently stored.

    -

    Convert from underlying bit representation, unless that -representation contains bits that do not correspond to a flag.

    -

    Convert from underlying bit representation, dropping any bits -that do not correspond to flags.

    -

    Convert from underlying bit representation, preserving all -bits (even those not corresponding to a defined flag).

    -
    Safety
    -

    The caller of the bitflags! macro can chose to allow or -disallow extra bits for their bitflags type.

    -

    The caller of from_bits_unchecked() has to ensure that -all bits correspond to a defined flag or that extra bits -are valid for this bitflags type.

    -

    Returns true if no flags are currently stored.

    -

    Returns true if all flags are currently set.

    -

    Returns true if there are flags common to both self and other.

    -

    Returns true if all of the flags in other are contained within self.

    -

    Inserts the specified flags in-place.

    -

    Removes the specified flags in-place.

    -

    Toggles the specified flags in-place.

    -

    Inserts or removes the specified flags depending on the passed value.

    -

    Returns the intersection between the flags in self and -other.

    -

    Specifically, the returned set contains only the flags which are -present in both self and other.

    -

    This is equivalent to using the & operator (e.g. -ops::BitAnd), as in flags & other.

    -

    Returns the union of between the flags in self and other.

    -

    Specifically, the returned set contains all flags which are -present in either self or other, including any which are -present in both (see Self::symmetric_difference if that -is undesirable).

    -

    This is equivalent to using the | operator (e.g. -ops::BitOr), as in flags | other.

    -

    Returns the difference between the flags in self and other.

    -

    Specifically, the returned set contains all flags present in -self, except for the ones present in other.

    -

    It is also conceptually equivalent to the “bit-clear” operation: -flags & !other (and this syntax is also supported).

    -

    This is equivalent to using the - operator (e.g. -ops::Sub), as in flags - other.

    -

    Returns the symmetric difference between the flags -in self and other.

    -

    Specifically, the returned set contains the flags present which -are present in self or other, but that are not present in -both. Equivalently, it contains the flags present in exactly -one of the sets self and other.

    -

    This is equivalent to using the ^ operator (e.g. -ops::BitXor), as in flags ^ other.

    -

    Returns the complement of this set of flags.

    -

    Specifically, the returned set contains all the flags which are -not set in self, but which are allowed for this type.

    -

    Alternatively, it can be thought of as the set difference -between Self::all() and self (e.g. Self::all() - self)

    -

    This is equivalent to using the ! operator (e.g. -ops::Not), as in !flags.

    -

    Trait Implementations

    Formats the value using the given formatter.

    -

    Returns the intersection between the two sets of flags.

    -

    The resulting type after applying the & operator.

    -

    Disables all flags disabled in the set.

    -

    Returns the union of the two sets of flags.

    -

    The resulting type after applying the | operator.

    -

    Adds the set of flags.

    -

    Returns the left flags, but with all the right flags toggled.

    -

    The resulting type after applying the ^ operator.

    -

    Toggles the set of flags.

    -

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    Formats the value using the given formatter. Read more

    -

    Extends a collection with the contents of an iterator. Read more

    -
    🔬 This is a nightly-only experimental API. (extend_one)

    Extends a collection with exactly one element.

    -
    🔬 This is a nightly-only experimental API. (extend_one)

    Reserves capacity in a collection for the given number of additional elements. Read more

    -

    Creates a value from an iterator. Read more

    -

    Feeds this value into the given Hasher. Read more

    -

    Feeds a slice of this type into the given Hasher. Read more

    -

    Formats the value using the given formatter.

    -

    Returns the complement of this set of flags.

    -

    The resulting type after applying the ! operator.

    -

    Formats the value using the given formatter.

    -

    This method returns an Ordering between self and other. Read more

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

    This method tests for self and other values to be equal, and is used -by ==. Read more

    -

    This method tests for !=.

    -

    This method returns an ordering between self and other values if one exists. Read more

    -

    This method tests less than (for self and other) and is used by the < operator. Read more

    -

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more

    -

    This method tests greater than (for self and other) and is used by the > operator. Read more

    -

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    -

    Returns the set difference of the two sets of flags.

    -

    The resulting type after applying the - operator.

    -

    Disables all flags enabled in the set.

    -

    Formats the value using the given formatter.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/task/struct.INITPROC.html b/public/main/os/task/struct.INITPROC.html deleted file mode 100644 index 00941f78..00000000 --- a/public/main/os/task/struct.INITPROC.html +++ /dev/null @@ -1,19 +0,0 @@ -INITPROC in os::task - Rust -
    -

    Struct os::task::INITPROC

    source · []
    pub struct INITPROC {
    -    __private_field: (),
    -}

    Fields

    __private_field: ()

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/task/switch/fn.__switch.html b/public/main/os/task/switch/fn.__switch.html deleted file mode 100644 index 7d5e620d..00000000 --- a/public/main/os/task/switch/fn.__switch.html +++ /dev/null @@ -1,6 +0,0 @@ -__switch in os::task::switch - Rust -
    -

    Function os::task::switch::__switch

    source · []
    pub unsafe extern "C" fn __switch(
        current_task_cx_ptr: *mut TaskContext,
        next_task_cx_ptr: *const TaskContext
    )
    - \ No newline at end of file diff --git a/public/main/os/task/switch/index.html b/public/main/os/task/switch/index.html deleted file mode 100644 index c7c3e27b..00000000 --- a/public/main/os/task/switch/index.html +++ /dev/null @@ -1,7 +0,0 @@ -os::task::switch - Rust -
    - \ No newline at end of file diff --git a/public/main/os/task/switch/sidebar-items.js b/public/main/os/task/switch/sidebar-items.js deleted file mode 100644 index 59e64029..00000000 --- a/public/main/os/task/switch/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["__switch",""]]}); \ No newline at end of file diff --git a/public/main/os/task/task/enum.TaskStatus.html b/public/main/os/task/task/enum.TaskStatus.html deleted file mode 100644 index 7e2e1ab8..00000000 --- a/public/main/os/task/task/enum.TaskStatus.html +++ /dev/null @@ -1,27 +0,0 @@ -TaskStatus in os::task::task - Rust -
    pub enum TaskStatus {
    -    Ready,
    -    Running,
    -    Blocking,
    -}

    Variants

    Ready

    Running

    Blocking

    Trait Implementations

    Returns a copy of the value. Read more

    -

    Performs copy-assignment from source. Read more

    -

    This method tests for self and other values to be equal, and is used -by ==. Read more

    -

    This method tests for !=.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The resulting type after obtaining ownership.

    -

    Creates owned data from borrowed data, usually by cloning. Read more

    -
    🔬 This is a nightly-only experimental API. (toowned_clone_into)

    Uses borrowed data to replace owned data, usually by cloning. Read more

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/task/task/index.html b/public/main/os/task/task/index.html deleted file mode 100644 index 32a57f56..00000000 --- a/public/main/os/task/task/index.html +++ /dev/null @@ -1,8 +0,0 @@ -os::task::task - Rust -
    - \ No newline at end of file diff --git a/public/main/os/task/task/sidebar-items.js b/public/main/os/task/task/sidebar-items.js deleted file mode 100644 index dd3e5786..00000000 --- a/public/main/os/task/task/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"enum":[["TaskStatus",""]],"struct":[["TaskControlBlock",""],["TaskControlBlockInner",""]]}); \ No newline at end of file diff --git a/public/main/os/task/task/struct.TaskControlBlock.html b/public/main/os/task/task/struct.TaskControlBlock.html deleted file mode 100644 index b431e047..00000000 --- a/public/main/os/task/task/struct.TaskControlBlock.html +++ /dev/null @@ -1,19 +0,0 @@ -TaskControlBlock in os::task::task - Rust -
    pub struct TaskControlBlock {
    -    pub process: Weak<ProcessControlBlock>,
    -    pub kstack: KernelStack,
    -    pub inner: UPIntrFreeCell<TaskControlBlockInner>,
    -}

    Fields

    process: Weak<ProcessControlBlock>kstack: KernelStackinner: UPIntrFreeCell<TaskControlBlockInner>

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/task/task/struct.TaskControlBlockInner.html b/public/main/os/task/task/struct.TaskControlBlockInner.html deleted file mode 100644 index cd782d69..00000000 --- a/public/main/os/task/task/struct.TaskControlBlockInner.html +++ /dev/null @@ -1,21 +0,0 @@ -TaskControlBlockInner in os::task::task - Rust -
    pub struct TaskControlBlockInner {
    -    pub res: Option<TaskUserRes>,
    -    pub trap_cx_ppn: PhysPageNum,
    -    pub task_cx: TaskContext,
    -    pub task_status: TaskStatus,
    -    pub exit_code: Option<i32>,
    -}

    Fields

    res: Option<TaskUserRes>trap_cx_ppn: PhysPageNumtask_cx: TaskContexttask_status: TaskStatusexit_code: Option<i32>

    Implementations

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/timer/constant.MSEC_PER_SEC.html b/public/main/os/timer/constant.MSEC_PER_SEC.html deleted file mode 100644 index 3c422973..00000000 --- a/public/main/os/timer/constant.MSEC_PER_SEC.html +++ /dev/null @@ -1,6 +0,0 @@ -MSEC_PER_SEC in os::timer - Rust -
    -

    Constant os::timer::MSEC_PER_SEC

    source · []
    const MSEC_PER_SEC: usize = 1000;
    - \ No newline at end of file diff --git a/public/main/os/timer/constant.TICKS_PER_SEC.html b/public/main/os/timer/constant.TICKS_PER_SEC.html deleted file mode 100644 index 296cfd51..00000000 --- a/public/main/os/timer/constant.TICKS_PER_SEC.html +++ /dev/null @@ -1,6 +0,0 @@ -TICKS_PER_SEC in os::timer - Rust -
    const TICKS_PER_SEC: usize = 100;
    - \ No newline at end of file diff --git a/public/main/os/timer/fn.add_timer.html b/public/main/os/timer/fn.add_timer.html deleted file mode 100644 index bb2c944a..00000000 --- a/public/main/os/timer/fn.add_timer.html +++ /dev/null @@ -1,6 +0,0 @@ -add_timer in os::timer - Rust -
    -

    Function os::timer::add_timer

    source · []
    pub fn add_timer(expire_ms: usize, task: Arc<TaskControlBlock>)
    - \ No newline at end of file diff --git a/public/main/os/timer/fn.check_timer.html b/public/main/os/timer/fn.check_timer.html deleted file mode 100644 index 4084c492..00000000 --- a/public/main/os/timer/fn.check_timer.html +++ /dev/null @@ -1,6 +0,0 @@ -check_timer in os::timer - Rust -
    -

    Function os::timer::check_timer

    source · []
    pub fn check_timer()
    - \ No newline at end of file diff --git a/public/main/os/timer/fn.get_time.html b/public/main/os/timer/fn.get_time.html deleted file mode 100644 index b217a3fb..00000000 --- a/public/main/os/timer/fn.get_time.html +++ /dev/null @@ -1,6 +0,0 @@ -get_time in os::timer - Rust -
    -

    Function os::timer::get_time

    source · []
    pub fn get_time() -> usize
    - \ No newline at end of file diff --git a/public/main/os/timer/fn.get_time_ms.html b/public/main/os/timer/fn.get_time_ms.html deleted file mode 100644 index 1749b65b..00000000 --- a/public/main/os/timer/fn.get_time_ms.html +++ /dev/null @@ -1,6 +0,0 @@ -get_time_ms in os::timer - Rust -
    -

    Function os::timer::get_time_ms

    source · []
    pub fn get_time_ms() -> usize
    - \ No newline at end of file diff --git a/public/main/os/timer/fn.set_next_trigger.html b/public/main/os/timer/fn.set_next_trigger.html deleted file mode 100644 index 5e597118..00000000 --- a/public/main/os/timer/fn.set_next_trigger.html +++ /dev/null @@ -1,6 +0,0 @@ -set_next_trigger in os::timer - Rust -
    pub fn set_next_trigger()
    - \ No newline at end of file diff --git a/public/main/os/timer/index.html b/public/main/os/timer/index.html deleted file mode 100644 index ec666c81..00000000 --- a/public/main/os/timer/index.html +++ /dev/null @@ -1,9 +0,0 @@ -os::timer - Rust -
    - \ No newline at end of file diff --git a/public/main/os/timer/sidebar-items.js b/public/main/os/timer/sidebar-items.js deleted file mode 100644 index 0e6557e4..00000000 --- a/public/main/os/timer/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"constant":[["MSEC_PER_SEC",""],["TICKS_PER_SEC",""]],"fn":[["add_timer",""],["check_timer",""],["get_time",""],["get_time_ms",""],["set_next_trigger",""]],"struct":[["TIMERS",""],["TimerCondVar",""]]}); \ No newline at end of file diff --git a/public/main/os/timer/struct.TIMERS.html b/public/main/os/timer/struct.TIMERS.html deleted file mode 100644 index f21fc476..00000000 --- a/public/main/os/timer/struct.TIMERS.html +++ /dev/null @@ -1,20 +0,0 @@ -TIMERS in os::timer - Rust -
    -

    Struct os::timer::TIMERS

    source · []
    struct TIMERS {
    -    __private_field: (),
    -}

    Fields

    __private_field: ()

    Methods from Deref<Target = UPIntrFreeCell<BinaryHeap<TimerCondVar>>>

    Panic if the data has been borrowed.

    -

    Trait Implementations

    The resulting type after dereferencing.

    -

    Dereferences the value.

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/timer/struct.TimerCondVar.html b/public/main/os/timer/struct.TimerCondVar.html deleted file mode 100644 index 3abc9cab..00000000 --- a/public/main/os/timer/struct.TimerCondVar.html +++ /dev/null @@ -1,32 +0,0 @@ -TimerCondVar in os::timer - Rust -
    pub struct TimerCondVar {
    -    pub expire_ms: usize,
    -    pub task: Arc<TaskControlBlock>,
    -}

    Fields

    expire_ms: usizetask: Arc<TaskControlBlock>

    Trait Implementations

    This method returns an Ordering between self and other. Read more

    -

    Compares and returns the maximum of two values. Read more

    -

    Compares and returns the minimum of two values. Read more

    -

    Restrict a value to a certain interval. Read more

    -

    This method tests for self and other values to be equal, and is used -by ==. Read more

    -

    This method tests for !=.

    -

    This method returns an ordering between self and other values if one exists. Read more

    -

    This method tests less than (for self and other) and is used by the < operator. Read more

    -

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more

    -

    This method tests greater than (for self and other) and is used by the > operator. Read more

    -

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/trap/context/index.html b/public/main/os/trap/context/index.html deleted file mode 100644 index 8742d3a9..00000000 --- a/public/main/os/trap/context/index.html +++ /dev/null @@ -1,7 +0,0 @@ -os::trap::context - Rust -
    - \ No newline at end of file diff --git a/public/main/os/trap/context/sidebar-items.js b/public/main/os/trap/context/sidebar-items.js deleted file mode 100644 index d7c5bfe2..00000000 --- a/public/main/os/trap/context/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"struct":[["TrapContext",""]]}); \ No newline at end of file diff --git a/public/main/os/trap/context/struct.TrapContext.html b/public/main/os/trap/context/struct.TrapContext.html deleted file mode 100644 index 25f423a0..00000000 --- a/public/main/os/trap/context/struct.TrapContext.html +++ /dev/null @@ -1,23 +0,0 @@ -TrapContext in os::trap::context - Rust -
    #[repr(C)]
    pub struct TrapContext { - pub x: [usize; 32], - pub sstatus: Sstatus, - pub sepc: usize, - pub kernel_satp: usize, - pub kernel_sp: usize, - pub trap_handler: usize, -}

    Fields

    x: [usize; 32]sstatus: Sstatussepc: usizekernel_satp: usizekernel_sp: usizetrap_handler: usize

    Implementations

    Trait Implementations

    Formats the value using the given formatter. Read more

    -

    Auto Trait Implementations

    Blanket Implementations

    Gets the TypeId of self. Read more

    -

    Immutably borrows from an owned value. Read more

    -

    Mutably borrows from an owned value. Read more

    -

    Performs the conversion.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -

    The type returned in the event of a conversion error.

    -

    Performs the conversion.

    -
    - \ No newline at end of file diff --git a/public/main/os/trap/fn.disable_supervisor_interrupt.html b/public/main/os/trap/fn.disable_supervisor_interrupt.html deleted file mode 100644 index d00777fe..00000000 --- a/public/main/os/trap/fn.disable_supervisor_interrupt.html +++ /dev/null @@ -1,6 +0,0 @@ -disable_supervisor_interrupt in os::trap - Rust -
    fn disable_supervisor_interrupt()
    - \ No newline at end of file diff --git a/public/main/os/trap/fn.enable_supervisor_interrupt.html b/public/main/os/trap/fn.enable_supervisor_interrupt.html deleted file mode 100644 index a8840bc8..00000000 --- a/public/main/os/trap/fn.enable_supervisor_interrupt.html +++ /dev/null @@ -1,6 +0,0 @@ -enable_supervisor_interrupt in os::trap - Rust -
    fn enable_supervisor_interrupt()
    - \ No newline at end of file diff --git a/public/main/os/trap/fn.enable_timer_interrupt.html b/public/main/os/trap/fn.enable_timer_interrupt.html deleted file mode 100644 index ce426b96..00000000 --- a/public/main/os/trap/fn.enable_timer_interrupt.html +++ /dev/null @@ -1,6 +0,0 @@ -enable_timer_interrupt in os::trap - Rust -
    pub fn enable_timer_interrupt()
    - \ No newline at end of file diff --git a/public/main/os/trap/fn.init.html b/public/main/os/trap/fn.init.html deleted file mode 100644 index 296c51cd..00000000 --- a/public/main/os/trap/fn.init.html +++ /dev/null @@ -1,6 +0,0 @@ -init in os::trap - Rust -
    -

    Function os::trap::init

    source · []
    pub fn init()
    - \ No newline at end of file diff --git a/public/main/os/trap/fn.set_kernel_trap_entry.html b/public/main/os/trap/fn.set_kernel_trap_entry.html deleted file mode 100644 index a107a0c3..00000000 --- a/public/main/os/trap/fn.set_kernel_trap_entry.html +++ /dev/null @@ -1,6 +0,0 @@ -set_kernel_trap_entry in os::trap - Rust -
    fn set_kernel_trap_entry()
    - \ No newline at end of file diff --git a/public/main/os/trap/fn.set_user_trap_entry.html b/public/main/os/trap/fn.set_user_trap_entry.html deleted file mode 100644 index 6091cdb5..00000000 --- a/public/main/os/trap/fn.set_user_trap_entry.html +++ /dev/null @@ -1,6 +0,0 @@ -set_user_trap_entry in os::trap - Rust -
    fn set_user_trap_entry()
    - \ No newline at end of file diff --git a/public/main/os/trap/fn.trap_from_kernel.html b/public/main/os/trap/fn.trap_from_kernel.html deleted file mode 100644 index 5ebd97b3..00000000 --- a/public/main/os/trap/fn.trap_from_kernel.html +++ /dev/null @@ -1,7 +0,0 @@ -trap_from_kernel in os::trap - Rust -
    #[no_mangle]
    -pub fn trap_from_kernel(_trap_cx: &TrapContext)
    - \ No newline at end of file diff --git a/public/main/os/trap/fn.trap_handler.html b/public/main/os/trap/fn.trap_handler.html deleted file mode 100644 index 6cb01098..00000000 --- a/public/main/os/trap/fn.trap_handler.html +++ /dev/null @@ -1,7 +0,0 @@ -trap_handler in os::trap - Rust -
    -

    Function os::trap::trap_handler

    source · []
    #[no_mangle]
    -pub fn trap_handler() -> !
    - \ No newline at end of file diff --git a/public/main/os/trap/fn.trap_return.html b/public/main/os/trap/fn.trap_return.html deleted file mode 100644 index eeaf870c..00000000 --- a/public/main/os/trap/fn.trap_return.html +++ /dev/null @@ -1,7 +0,0 @@ -trap_return in os::trap - Rust -
    -

    Function os::trap::trap_return

    source · []
    #[no_mangle]
    -pub fn trap_return() -> !
    - \ No newline at end of file diff --git a/public/main/os/trap/index.html b/public/main/os/trap/index.html deleted file mode 100644 index a8d01942..00000000 --- a/public/main/os/trap/index.html +++ /dev/null @@ -1,9 +0,0 @@ -os::trap - Rust -
    - \ No newline at end of file diff --git a/public/main/os/trap/sidebar-items.js b/public/main/os/trap/sidebar-items.js deleted file mode 100644 index 240dedf4..00000000 --- a/public/main/os/trap/sidebar-items.js +++ /dev/null @@ -1 +0,0 @@ -initSidebarItems({"fn":[["disable_supervisor_interrupt",""],["enable_supervisor_interrupt",""],["enable_timer_interrupt",""],["init",""],["set_kernel_trap_entry",""],["set_user_trap_entry",""],["trap_from_kernel",""],["trap_handler",""],["trap_return",""]],"mod":[["context",""]]}); \ No newline at end of file diff --git a/public/main/rust-logo.svg b/public/main/rust-logo.svg deleted file mode 100644 index 62424d8f..00000000 --- a/public/main/rust-logo.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - diff --git a/public/main/rustdoc.css b/public/main/rustdoc.css deleted file mode 100644 index deed2f8a..00000000 --- a/public/main/rustdoc.css +++ /dev/null @@ -1 +0,0 @@ - @font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular.woff2") format("woff2"),url("FiraSans-Regular.woff") format('woff');font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium.woff2") format("woff2"),url("FiraSans-Medium.woff") format('woff');font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular.ttf.woff2") format("woff2"),url("SourceSerif4-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It.ttf.woff2") format("woff2"),url("SourceSerif4-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold.ttf.woff2") format("woff2"),url("SourceSerif4-Bold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular.ttf.woff2") format("woff2"),url("SourceCodePro-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It.ttf.woff2") format("woff2"),url("SourceCodePro-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold.ttf.woff2") format("woff2"),url("SourceCodePro-Semibold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic.ttf.woff2") format("woff2"),url("NanumBarunGothic.ttf.woff") format("woff");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html{content:"";}@media (prefers-color-scheme:light){html{content:"light";}}@media (prefers-color-scheme:dark){html{content:"dark";}}body{font:1rem/1.4 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;-webkit-font-feature-settings:"kern","liga";-moz-font-feature-settings:"kern","liga";font-feature-settings:"kern","liga";}h1{font-size:1.5rem;}h2{font-size:1.4rem;}h3{font-size:1.3rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:20px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}h1.fqn{margin:0;padding:0;}.main-heading{display:flex;border-bottom:1px dashed #DDDDDD;padding-bottom:6px;margin-bottom:15px;padding-left:1px;}.main-heading a:hover{text-decoration:underline;}#toggle-all-docs{text-decoration:none;}h2,.top-doc h3,.top-doc h4,.sidebar .others h3{border-bottom:1px solid;}h3.code-header{font-size:1.1rem;}h4.code-header{font-size:1rem;}h3.code-header,h4.code-header{font-weight:600;border-bottom-style:none;padding:0;margin:0;}.impl,.impl-items .method,.methods .method,.impl-items .type,.methods .type,.impl-items .associatedconstant,.methods .associatedconstant,.impl-items .associatedtype,.methods .associatedtype{flex-basis:100%;font-weight:600;margin-top:16px;margin-bottom:10px;position:relative;}div.impl-items>div{padding-left:0;}h1,h2,h3,h4,h5,h6,.sidebar,a.source,.search-input,.search-results .result-name,.content table td:first-child>a,.item-left>a,.out-of-band,span.since,#source-sidebar,#sidebar-toggle,details.rustdoc-toggle>summary::before,div.impl-items>div:not(.docblock):not(.item-info),.content ul.crate a.crate,a.srclink,#main-content>ul.docblock>li>a{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}.content ul.crate a.crate{font-size:1rem/1.6;}ol,ul{padding-left:25px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.6em;}p{margin:0 0 .6em 0;}summary{outline:none;}td,th{padding:0;}table{border-collapse:collapse;}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.source main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}.source .width-limiter{max-width:unset;}details:not(.rustdoc-toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.1em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;}.docblock.item-decl{margin-left:0;}.item-decl pre{overflow-x:auto;}.source .content pre{padding:20px;}img{max-width:100%;}li{position:relative;}.source .content{max-width:none;overflow:visible;margin-left:0px;}nav.sub{position:relative;font-size:1rem;text-transform:uppercase;}.sub-container{display:flex;flex-direction:row;flex-wrap:nowrap;}.sub-logo-container{display:none;margin-right:20px;}.source .sub-logo-container{display:block;}.source .sub-logo-container>img{height:60px;width:60px;object-fit:contain;}.sidebar{width:200px;overflow-y:scroll;position:sticky;min-width:200px;height:100vh;top:0;left:0;}.rustdoc.source .sidebar{width:50px;min-width:0px;max-width:300px;flex-grow:0;flex-shrink:0;flex-basis:auto;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;}.source .sidebar>*:not(:first-child){transition:opacity 0.5s,visibility 0.2s;opacity:0;visibility:hidden;}.source .sidebar.expanded{overflow-y:auto;}.source .sidebar.expanded>*{opacity:1;visibility:visible;}*{scrollbar-width:initial;}.sidebar{scrollbar-width:thin;}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;}.sidebar .block>ul>li{margin-right:-10px;}.hidden{display:none !important;}.logo-container{display:flex;margin-top:10px;margin-bottom:10px;justify-content:center;}.logo-container>img{height:100px;width:100px;}.sidebar .location{border:1px solid;font-size:1.0625rem;margin:30px 10px 20px 10px;text-align:center;word-wrap:break-word;font-weight:inherit;padding:0;}.sidebar .version{font-size:0.9375rem;text-align:center;border-bottom:1px solid;overflow-wrap:break-word;overflow-wrap:anywhere;word-wrap:break-word;word-break:break-word;}.location:empty{border:none;}.location a:first-of-type{font-weight:500;}.location a:hover{text-decoration:underline;}.block{padding:0;margin-bottom:14px;}.block h2,.block h3{text-align:center;}.block ul,.block li{margin:0 10px;padding:0;list-style:none;}.block a{display:block;text-overflow:ellipsis;overflow:hidden;line-height:15px;padding:7px 5px;font-size:0.875rem;font-weight:300;transition:border 500ms ease-out;}.sidebar-title{border-top:1px solid;border-bottom:1px solid;text-align:center;font-size:1.0625rem;margin-bottom:5px;font-weight:inherit;padding:0;}.sidebar-links{margin-bottom:15px;}.sidebar-links>a{padding-left:10px;width:100%;}.sidebar-menu{display:none;}.source .content pre.rust{white-space:pre;overflow:auto;padding-left:0;}.rustdoc .example-wrap{display:inline-flex;margin-bottom:10px;}.example-wrap{position:relative;width:100%;}.example-wrap>pre.line-number{overflow:initial;border:1px solid;padding:13px 8px;text-align:right;border-top-left-radius:5px;border-bottom-left-radius:5px;}.example-wrap>pre.rust a:hover{text-decoration:underline;}.rustdoc:not(.source) .example-wrap>pre:not(.line-number){width:100%;overflow-x:auto;}.rustdoc:not(.source) .example-wrap>pre.line-numbers{width:auto;overflow-x:visible;}.rustdoc .example-wrap>pre{margin:0;}#search{position:relative;}.search-loading{text-align:center;}#results>table{width:100%;table-layout:fixed;}.content>.example-wrap pre.line-numbers{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.line-numbers span{cursor:pointer;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock-short p{display:inline;}.docblock-short p{overflow:hidden;text-overflow:ellipsis;margin:0;}.docblock>:not(pre)>code,.docblock-short>:not(pre)>code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.3rem;}.top-doc .docblock h3{font-size:1.15rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.1rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.95rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.information){max-width:100%;overflow-x:auto;}.content .out-of-band{flex-grow:0;text-align:right;margin-left:auto;margin-right:0;font-size:1.15rem;padding:0 0 0 12px;font-weight:normal;float:right;}.method>.code-header,.trait-impl>.code-header,.invisible>.code-header{max-width:calc(100% - 41px);display:block;}.invisible{width:100%;display:inline-block;}.content .in-band{flex-grow:1;margin:0px;padding:0px;overflow-wrap:break-word;overflow-wrap:anywhere;}.in-band>code,.in-band>.code-header{display:inline-block;}#main-content{position:relative;}#main-content>.since{top:inherit;font-family:"Fira Sans",Arial,sans-serif;}.content table:not(.table-display){border-spacing:0 5px;}.content td{vertical-align:top;}.content td:first-child{padding-right:20px;}.content td p:first-child{margin-top:0;}.content td h1,.content td h2{margin-left:0;font-size:1.1rem;}.content tr:first-child td{border-top:0;}.docblock table{margin:.5em 0;width:calc(100% - 2px);overflow-x:auto;overflow-wrap:normal;display:block;}.docblock table td{padding:.5em;border:1px dashed;}.docblock table th{padding:.5em;text-align:left;border:1px solid;}.fields+table{margin-bottom:1em;}.content .item-list{list-style-type:none;padding:0;}.content .multi-column{-moz-column-count:5;-moz-column-gap:2.5em;-webkit-column-count:5;-webkit-column-gap:2.5em;column-count:5;column-gap:2.5em;}.content .multi-column li{width:100%;display:inline-block;}.content>.methods>.method{font-size:1rem;position:relative;}.content .method .where,.content .fn .where,.content .where.fmt-newline{display:block;font-size:0.8rem;}.content .methods>div:not(.notable-traits):not(.method){margin-left:40px;margin-bottom:15px;}.content .docblock>.impl-items{margin-left:20px;margin-top:-34px;}.content .docblock>.impl-items .table-display{margin:0;}.content .docblock>.impl-items table td{padding:0;}.content .docblock>.impl-items .table-display,.impl-items table td{border:none;}.content .item-info code{font-size:0.81rem;}.content .item-info{position:relative;margin-left:33px;}.sub-variant>div>.item-info{margin-top:initial;}.content .item-info::before{content:'⬑';font-size:1.5625rem;position:absolute;top:-6px;left:-19px;}.content .impl-items .docblock,.content .impl-items .item-info{margin-bottom:.6em;}.content .impl-items>.item-info{margin-left:40px;}.methods>.item-info,.content .impl-items>.item-info{margin-top:-8px;}.impl-items{flex-basis:100%;}#main-content>.item-info{margin-top:0;}nav:not(.sidebar){flex-grow:1;border-bottom:1px solid;padding-bottom:10px;margin-bottom:25px;}.source nav:not(.sidebar).sub{margin-left:32px;}nav.main{padding:20px 0;text-align:center;}nav.main .current{border-top:1px solid;border-bottom:1px solid;}nav.main .separator{border:1px solid;display:inline-block;height:23px;margin:0 20px;}nav.sum{text-align:right;}nav.sub form{display:inline;}a{text-decoration:none;background:transparent;}.small-section-header{display:flex;justify-content:space-between;position:relative;}.small-section-header:hover>.anchor{display:initial;}.in-band:hover>.anchor,.impl:hover>.anchor,.method.trait-impl:hover>.anchor,.type.trait-impl:hover>.anchor,.associatedconstant.trait-impl:hover>.anchor,.associatedtype.trait-impl:hover>.anchor{display:inline-block;position:absolute;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-15px;padding-right:8px;}h2.small-section-header>.anchor{padding-right:6px;}.anchor::before{content:'§';}.docblock a:not(.srclink):not(.test-arrow):hover,.docblock-short a:not(.srclink):not(.test-arrow):hover,.item-info a{text-decoration:underline;}.invisible>.srclink,.method>.code-header+.srclink{position:absolute;top:0;right:0;font-size:1.0625rem;font-weight:normal;}.block a.current.crate{font-weight:500;}.item-table{display:table;}.item-row{display:table-row;}.item-left,.item-right{display:table-cell;}.item-left{padding-right:1.2rem;}.search-container{position:relative;max-width:960px;}.search-container>div{display:inline-flex;width:calc(100% - 63px);}.search-results-title{display:inline;}#search-settings{font-size:1.5rem;font-weight:500;margin-bottom:20px;}#crate-search{min-width:115px;margin-top:5px;margin-left:0.2em;padding-left:0.3em;padding-right:23px;border:0;border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;text-overflow:"";background-repeat:no-repeat;background-color:transparent;background-size:20px;background-position:calc(100% - 1px) 56%;background-image:url("down-arrow.svg");}.search-container>.top-button{position:absolute;right:0;top:10px;}.search-input{-webkit-appearance:none;-moz-box-sizing:border-box !important;box-sizing:border-box !important;outline:none;border:none;border-radius:1px;margin-top:5px;padding:10px 16px;font-size:1.0625rem;transition:border-color 300ms ease;transition:border-radius 300ms ease-in-out;transition:box-shadow 300ms ease-in-out;width:100%;}.search-input:focus{border-radius:2px;border:0;outline:0;}.search-results{display:none;padding-bottom:2em;}.search-results.active{display:block;clear:both;}.search-results .desc>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;}.search-results>a{display:block;width:100%;margin-left:2px;margin-right:2px;border-bottom:1px solid #aaa3;}.search-results>a>div{display:flex;flex-flow:row wrap;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:50%;}.search-results .result-name{padding-right:1em;}.search-results .result-name>span{display:inline-block;margin:0;font-weight:normal;}body.blur>:not(#help){filter:blur(8px);-webkit-filter:blur(8px);opacity:.7;}#help{width:100%;height:100vh;position:fixed;top:0;left:0;display:flex;justify-content:center;align-items:center;}#help>div{flex:0 0 auto;box-shadow:0 0 6px rgba(0,0,0,.2);width:550px;height:auto;border:1px solid;}#help dt{float:left;clear:left;display:block;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{text-align:center;display:block;margin:10px 0;border-bottom:1px solid;padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid;}#help dd{margin:5px 35px;}#help .infos{padding-left:0;}#help h1,#help h2{margin-top:0;}#help>div div{width:50%;float:left;padding:0 20px 20px 17px;;}.item-info .stab{display:table;}.stab{padding:3px;margin-bottom:5px;font-size:0.9rem;font-weight:normal;}.stab p{display:inline;}.stab .emoji{font-size:1.2rem;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.module-item .stab,.import-item .stab{border-radius:3px;display:inline-block;font-size:0.8rem;line-height:1.2;margin-bottom:0;margin-left:.3em;padding:2px;vertical-align:text-bottom;}.module-item.unstable,.import-item.unstable{opacity:0.65;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;padding-right:2px;position:initial;}.impl-items .srclink,.impl .srclink,.methods .srclink{font-weight:normal;font-size:1rem;}.impl .srclink{font-size:1.0625rem;}.rightside{float:right;}.has-srclink{font-size:1rem;margin-bottom:12px;justify-content:space-between;}.variants_table{width:100%;}.variants_table tbody tr td:first-child{width:1%;}td.summary-column{width:100%;}.summary{padding-right:0px;}pre.rust .question-mark{font-weight:bold;}a.test-arrow{display:inline-block;visibility:hidden;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:1.3rem;top:5px;right:5px;z-index:1;}.example-wrap:hover .test-arrow{visibility:visible;}a.test-arrow:hover{text-decoration:none;}.section-header:hover a:before{position:absolute;left:-25px;padding-right:10px;content:'\2002\00a7\2002';}.section-header:hover a{text-decoration:none;}.code-attribute{font-weight:300;}.item-spacer{width:100%;height:12px;}.out-of-band>span.since{position:initial;font-size:1.25rem;margin-right:5px;}h3.variant{font-weight:600;font-size:1.1rem;margin-bottom:10px;border-bottom:none;}.sub-variant h4{font-size:1rem;font-weight:400;border-bottom:none;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}.toggle-label{display:inline-block;margin-left:4px;margin-top:3px;}.top-doc .docblock>.section-header:first-child{margin-left:15px;}.top-doc .docblock>.section-header:first-child:hover>a:before{left:-10px;}.docblock>.section-header:first-child{margin-top:0;}:target>code,:target>.code-header{opacity:1;}:target{padding-right:3px;}.information{position:absolute;left:-25px;margin-top:7px;z-index:1;}.tooltip{position:relative;display:inline-block;cursor:pointer;}.tooltip::after{display:none;text-align:center;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;font-size:1rem;}.tooltip.ignore::after{content:"This example is not tested";}.tooltip.compile_fail::after{content:"This example deliberately fails to compile";}.tooltip.should_panic::after{content:"This example panics";}.tooltip.edition::after{content:"This code runs with edition " attr(data-edition);}.tooltip::before{content:" ";position:absolute;top:50%;left:16px;margin-top:-5px;border-width:5px;border-style:solid;display:none;}.tooltip:hover::before,.tooltip:hover::after{display:inline;}.tooltip.compile_fail,.tooltip.should_panic,.tooltip.ignore{font-weight:bold;font-size:1.25rem;}.notable-traits-tooltip{display:inline-block;cursor:pointer;}.notable-traits:hover .notable-traits-tooltiptext,.notable-traits .notable-traits-tooltiptext.force-tooltip{display:inline-block;}.notable-traits .notable-traits-tooltiptext{display:none;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;z-index:10;font-size:1rem;cursor:default;position:absolute;border:1px solid;}.notable-traits-tooltip::after{content:"\00a0\00a0\00a0";}.notable-traits .notable,.notable-traits .docblock{margin:0;}.notable-traits .notable{margin:0;margin-bottom:13px;font-size:1.1875rem;font-weight:600;}.notable-traits .docblock code.content{margin:0;padding:0;font-size:1.25rem;}pre.rust.rust-example-rendered{position:relative;}pre.rust{tab-size:4;-moz-tab-size:4;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#titles{height:35px;}#titles>button{float:left;width:33.3%;text-align:center;font-size:1.125rem;cursor:pointer;border:0;border-top:2px solid;}#titles>button:not(:last-child){margin-right:1px;width:calc(33.3% - 1px);}#titles>button>div.count{display:inline-block;font-size:1rem;}.notable-traits{cursor:pointer;z-index:2;margin-left:5px;}#all-types{text-align:center;border:1px solid;margin:0 10px;margin-bottom:10px;display:block;border-radius:7px;}#all-types>p{margin:5px 0;}#sidebar-toggle{position:sticky;top:0;left:0;cursor:pointer;font-weight:bold;font-size:1.2rem;border-bottom:1px solid;display:flex;height:40px;justify-content:center;align-items:center;z-index:10;}#source-sidebar{width:100%;z-index:1;overflow:auto;}#source-sidebar>.title{font-size:1.5rem;text-align:center;border-bottom:1px solid;margin-bottom:6px;}.theme-picker{position:absolute;left:-34px;top:9px;}.theme-picker button{outline:none;}#settings-menu,#help-button{position:absolute;top:10px;}#settings-menu{right:0;outline:none;}#theme-picker,#settings-menu,#help-button,#copy-path{padding:4px;font-size:16px;width:27px;height:29px;border:1px solid;border-radius:3px;cursor:pointer;}#help-button{right:30px;font-family:"Fira Sans",Arial,sans-serif;text-align:center;font-size:16px;padding-top:2px;}#copy-path{background:initial;margin-left:10px;padding:0;padding-left:2px;border:0;}#theme-choices{display:none;position:absolute;left:0;top:28px;border:1px solid;border-radius:3px;z-index:1;cursor:pointer;}#theme-choices>button{border:none;width:100%;padding:4px 8px;text-align:center;background:rgba(0,0,0,0);overflow-wrap:normal;}#theme-choices>button:not(:first-child){border-top:1px solid;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px;border-radius:3px;box-shadow:inset 0 -1px 0;cursor:default;}.hidden-by-impl-hider,.hidden-by-usual-hider{display:none !important;}#implementations-list>h3>span.in-band{width:100%;}.table-display{width:100%;border:0;border-collapse:collapse;border-spacing:0;font-size:1rem;}.table-display tr td:first-child{padding-right:0;}.table-display tr td:last-child{float:right;}.table-display .out-of-band{position:relative;font-size:1.1875rem;display:block;}#implementors-list>.impl-items .table-display .out-of-band{font-size:1.0625rem;}.table-display td:hover .anchor{display:block;top:2px;left:-5px;}#main-content>ul{padding-left:10px;}#main-content>ul>li{list-style:none;}.non-exhaustive{margin-bottom:1em;}div.children{padding-left:27px;display:none;}div.name{cursor:pointer;position:relative;margin-left:16px;}div.files>a{display:block;padding:0 3px;}div.files>a:hover,div.name:hover{background-color:#a14b4b;}div.name.expand+.children{display:block;}div.name::before{content:"\25B6";padding-left:4px;font-size:0.7rem;position:absolute;left:-16px;top:4px;}div.name.expand::before{transform:rotate(90deg);left:-15px;top:2px;}details.rustdoc-toggle>summary.hideme{cursor:pointer;}details.rustdoc-toggle>summary{list-style:none;}details.rustdoc-toggle>summary::-webkit-details-marker,details.rustdoc-toggle>summary::marker{display:none;}details.rustdoc-toggle>summary.hideme>span{margin-left:9px;}details.rustdoc-toggle>summary::before{content:"";cursor:pointer;width:17px;height:max(17px,1.1em);background-repeat:no-repeat;background-position:top left;display:inline-block;vertical-align:middle;opacity:.5;}details.rustdoc-toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.rustdoc-toggle>summary.hideme::after{content:"";}details.rustdoc-toggle>summary:focus::before,details.rustdoc-toggle>summary:hover::before{opacity:1;}details.rustdoc-toggle.top-doc>summary,details.rustdoc-toggle.top-doc>summary::before,details.rustdoc-toggle.non-exhaustive>summary,details.rustdoc-toggle.non-exhaustive>summary::before{font-family:'Fira Sans';font-size:1rem;}details.non-exhaustive{margin-bottom:8px;}details.rustdoc-toggle>summary.hideme::before{position:relative;}details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:3px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.rustdoc-toggle[open] >summary.hideme{position:absolute;}details.rustdoc-toggle{position:relative;}details.rustdoc-toggle[open] >summary.hideme>span{display:none;}details.undocumented[open] >summary::before,details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle[open] >summary.hideme::before{background-image:url("toggle-minus.svg");}details.undocumented>summary::before,details.rustdoc-toggle>summary::before{background-image:url("toggle-plus.svg");}details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle[open] >summary.hideme::before{width:17px;height:max(17px,1.1em);background-repeat:no-repeat;background-position:top left;display:inline-block;content:"";}details.rustdoc-toggle[open] >summary::after,details.rustdoc-toggle[open] >summary.hideme::after{content:"Collapse";}@media (min-width:701px){.docblock>.information:first-child>.tooltip{margin-top:16px;}.sidebar.expanded+main .width-limiter .sub-logo-container.rust-logo{display:none;}.rustdoc.source .sidebar{transition:width .5s;}.source .sidebar.expanded{width:300px;}}@media (max-width:700px){body{padding-top:0px;}main{padding-left:15px;padding-top:0px;}#theme-picker{display:none;width:0;}.rustdoc{flex-direction:column;}.rustdoc:not(.source)>.sidebar{width:100%;height:45px;min-height:40px;max-height:45px;margin:0;padding:0 15px;position:static;z-index:11;overflow-y:hidden;}.rustdoc.source>.sidebar{position:fixed;top:0;left:0;margin:0;z-index:11;width:0;}.sidebar.mobile{position:sticky !important;top:0;left:0;width:100%;margin-left:0;background-color:rgba(0,0,0,0);}.sidebar>.location{float:right;margin:0px;margin-top:2px;padding:3px 10px 1px 10px;min-height:39px;background:inherit;text-align:left;font-size:1.5rem;}.sidebar .location:empty{padding:0;}.rustdoc:not(.source) .sidebar .logo-container{width:35px;height:35px;margin-top:5px;margin-bottom:5px;float:left;margin-left:50px;}.sidebar .logo-container>img{max-width:35px;max-height:35px;}.sidebar-menu{position:fixed;z-index:10;font-size:2rem;cursor:pointer;width:45px;left:0;top:0;text-align:center;display:block;border-bottom:1px solid;border-right:1px solid;height:45px;}.rustdoc.source>.sidebar>.sidebar-menu{display:none;}.sidebar-elems{position:fixed;z-index:1;top:45px;bottom:0;width:246px;left:-246px;overflow-y:auto;border-right:1px solid;}.sidebar>.block.version{overflow:hidden;border-bottom:none;margin-bottom:0;height:100%;padding-left:12px;}.sidebar>.block.version>div.narrow-helper{float:left;width:1px;height:100%;}.sidebar>.block.version>p{margin:0;min-width:55px;display:flex;align-items:center;height:100%;}.source nav:not(.sidebar).sub{margin-left:32px;}.content{margin-left:0px;}.source .content{margin-top:10px;}#search{margin-left:0;padding:0;}.anchor{display:none !important;}.theme-picker{z-index:1;}.notable-traits{position:absolute;left:-22px;top:24px;}#titles>button>div.count{float:left;width:100%;}#titles{height:50px;}.show-it,.sidebar-elems:focus-within{z-index:2;left:0;}.show-it>.block.items{margin:8px 0;}.show-it>.block.items>ul{margin:0;}.show-it>.block.items>ul>li{text-align:center;margin:2px 0;}.show-it>.block.items>ul>li>a{font-size:1.3125rem;}#sidebar-filler{position:fixed;left:45px;width:calc(100% - 45px);top:0;height:45px;z-index:-1;border-bottom:1px solid;}#main-content>details.rustdoc-toggle>summary::before,#main-content>div>details.rustdoc-toggle>summary::before{left:-11px;}#all-types{margin:10px;}.sidebar.expanded #sidebar-toggle{font-size:1.5rem;}.sidebar:not(.expanded) #sidebar-toggle{position:fixed;left:1px;top:100px;width:30px;font-size:1.5rem;text-align:center;padding:0;z-index:10;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer;font-weight:bold;border:1px solid;border-left:0;}#source-sidebar{z-index:11;}#main-content>.line-numbers{margin-top:0;}.notable-traits .notable-traits-tooltiptext{left:0;top:100%;}#help-button{display:none;}.item-table{display:block;}.item-row{display:flex;flex-flow:column wrap;}.item-left,.item-right{width:100%;}.search-container>div{width:calc(100% - 32px);}.search-results>a{border-bottom:1px solid #aaa9;padding:5px 0px;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:100%;}.search-results div.desc,.search-results .result-description,.item-right{padding-left:2em;}.source .sidebar.expanded{max-width:100vw;width:100vw;}details.rustdoc-toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before,#main-content>details.rustdoc-toggle:not(.top-doc)>summary::before,#main-content>div>details.rustdoc-toggle>summary::before{left:-11px;}}@media print{nav.sub,.content .out-of-band{display:none;}}@media (max-width:464px){#titles,#titles>button{height:73px;}#main-content>table:not(.table-display) td{word-break:break-word;width:50%;}.search-container>div{display:block;width:calc(100% - 37px);}#crate-search{border-radius:4px;border:0;}#theme-picker,#settings-menu{padding:5px;width:31px;height:31px;}#theme-picker{margin-top:-2px;}#settings-menu{top:7px;}.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock table code{overflow-wrap:normal;}.sub-container{flex-direction:column;}.sub-logo-container{align-self:center;}.source .sub-logo-container>img{height:35px;width:35px;}.sidebar:not(.expanded) #sidebar-toggle{top:10px;}}.scraped-example-title{font-family:'Fira Sans';}.scraped-example:not(.expanded) .code-wrapper pre.line-numbers{overflow:hidden;max-height:240px;}.scraped-example:not(.expanded) .code-wrapper .example-wrap pre.rust{overflow-y:hidden;max-height:240px;padding-bottom:0;}.scraped-example .code-wrapper .prev{position:absolute;top:0.25em;right:2.25em;z-index:100;cursor:pointer;}.scraped-example .code-wrapper .next{position:absolute;top:0.25em;right:1.25em;z-index:100;cursor:pointer;}.scraped-example .code-wrapper .expand{position:absolute;top:0.25em;right:0.25em;z-index:100;cursor:pointer;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper:before{content:" ";width:100%;height:5px;position:absolute;z-index:100;top:0;background:linear-gradient(to bottom,rgba(255,255,255,1),rgba(255,255,255,0));}.scraped-example:not(.expanded) .code-wrapper:after{content:" ";width:100%;height:5px;position:absolute;z-index:100;bottom:0;background:linear-gradient(to top,rgba(255,255,255,1),rgba(255,255,255,0));}.scraped-example:not(.expanded) .code-wrapper{overflow:hidden;max-height:240px;}.scraped-example .code-wrapper .line-numbers{margin:0;padding:14px 0;}.scraped-example .code-wrapper .line-numbers span{padding:0 14px;}.scraped-example .code-wrapper .example-wrap{flex:1;overflow-x:auto;overflow-y:hidden;margin-bottom:0;}.scraped-example .code-wrapper .example-wrap pre.rust{overflow-x:inherit;width:inherit;overflow-y:hidden;}.scraped-example .example-wrap .rust span.highlight{background:#fcffd6;}.scraped-example .example-wrap .rust span.highlight.focus{background:#f6fdb0;}.more-examples-toggle{margin-top:10px;}.more-examples-toggle summary{color:#999;font-family:'Fira Sans';}.more-scraped-examples{margin-left:25px;display:flex;flex-direction:row;width:calc(100% - 25px);}.more-scraped-examples-inner{width:calc(100% - 20px);}.toggle-line{align-self:stretch;margin-right:10px;margin-top:5px;padding:0 4px;cursor:pointer;}.toggle-line:hover .toggle-line-inner{background:#aaa;}.toggle-line-inner{min-width:2px;background:#ddd;height:100%;}.more-scraped-examples .scraped-example{margin-bottom:20px;}.more-scraped-examples .scraped-example:last-child{margin-bottom:0;}.example-links a{margin-top:20px;font-family:'Fira Sans';}.example-links ul{margin-bottom:0;} \ No newline at end of file diff --git a/public/main/search-index.js b/public/main/search-index.js deleted file mode 100644 index c6ba439b..00000000 --- a/public/main/search-index.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchIndex = JSON.parse('{\ -"os":{"doc":"","t":[3,12,0,11,11,5,0,0,11,0,11,0,11,0,0,14,14,5,0,0,0,0,0,0,11,11,11,6,17,6,17,17,17,5,5,17,17,17,17,17,17,17,17,3,11,11,11,11,5,11,11,11,11,0,0,0,3,12,5,11,11,11,11,11,0,11,11,11,0,12,13,13,12,4,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,11,11,13,12,12,13,12,12,12,12,12,12,12,12,12,12,11,4,12,12,12,12,12,12,12,3,12,12,12,12,12,12,12,12,12,12,12,12,12,12,3,3,3,3,3,17,17,17,17,17,17,12,12,17,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,3,17,3,12,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,5,5,5,5,11,8,3,12,11,11,11,11,10,11,0,10,11,11,11,10,18,18,18,18,3,3,3,3,3,3,18,18,3,18,18,3,12,12,12,12,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,11,11,11,11,11,11,11,11,12,11,11,11,12,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,4,13,3,13,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,0,0,10,10,0,10,10,18,3,3,3,18,18,3,18,18,12,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,5,11,11,11,12,5,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,13,13,13,3,3,17,4,11,12,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,12,11,11,11,5,11,11,11,11,11,12,11,12,12,11,11,11,11,11,11,11,11,11,11,11,12,11,11,12,11,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,0,0,0,5,0,0,12,12,12,12,17,17,3,3,3,3,8,17,6,17,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,12,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,8,6,3,3,12,10,11,11,11,11,11,11,11,12,10,11,11,11,12,11,5,5,5,11,11,11,11,5,11,11,11,10,11,11,12,12,11,11,11,11,11,11,11,11,11,7,7,5,5,5,13,13,3,3,3,4,3,18,18,18,18,12,11,11,12,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,5,5,5,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,12,11,12,11,11,11,11,11,12,11,11,11,5,11,11,5,5,11,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,18,18,18,3,3,3,18,18,3,3,18,18,18,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,5,5,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,17,17,17,17,17,17,17,17,17,5,5,5,5,5,0,0,0,0,3,3,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,12,11,8,3,3,3,11,11,11,11,11,11,11,11,11,12,11,11,11,10,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,10,11,11,12,3,3,11,11,11,11,12,11,11,11,12,11,11,11,11,11,11,11,11,11,11,12,12,3,3,3,3,3,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,12,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,0,0,0,5,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,12,5,5,5,11,11,5,0,5,11,5,11,0,11,0,0,0,0,5,0,0,11,11,11,3,11,11,11,11,11,12,12,12,11,11,11,11,12,12,3,3,3,3,3,3,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,11,11,5,12,11,12,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,5,11,3,3,3,12,12,11,5,11,11,11,11,11,11,11,11,11,5,11,11,11,5,11,11,11,11,5,12,5,11,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,12,12,11,11,12,12,11,11,11,11,11,11,12,11,11,11,12,12,12,11,12,12,12,12,12,12,11,11,11,11,11,11,11,3,3,12,11,11,11,11,11,12,5,5,5,5,5,5,11,11,11,11,12,11,11,11,5,5,11,5,11,11,11,11,11,11,18,18,18,18,18,3,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,13,13,13,3,3,4,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,12,11,11,11,11,12,11,12,12,12,12,11,12,11,11,11,11,11,11,11,11,11,17,17,3,3,12,5,11,11,11,11,5,11,11,11,12,11,11,5,5,11,11,11,5,12,11,11,11,11,11,11,0,5,5,5,5,5,5,5,5,5,3,11,11,11,11,11,11,12,12,12,11,12,12,11,11,11,12],"n":["DEV_NON_BLOCKING_ACCESS","__private_field","board","borrow","borrow_mut","clear_bss","config","console","deref","drivers","from","fs","into","lang_items","mm","print","println","rust_main","sbi","sync","syscall","task","timer","trap","try_from","try_into","type_id","BlockDeviceImpl","CLOCK_FREQ","CharDeviceImpl","MMIO","VIRT_PLIC","VIRT_UART","device_init","irq_handler","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","borrow","borrow_mut","from","into","print","try_from","try_into","type_id","write_str","block","chardev","plic","BLOCK_DEVICE","__private_field","block_device_test","borrow","borrow_mut","deref","from","into","sdcard","try_from","try_into","type_id","virtio_blk","0","ACMD23","ACMD41","CID_CRC","CMD","CMD0","CMD10","CMD12","CMD16","CMD17","CMD18","CMD24","CMD25","CMD55","CMD58","CMD59","CMD8","CMD9","CMDFailed","CSDStruct","CSD_CRC","CS_HIGH","CS_LOW","CannotGetCardInfo","CardBlockSize","CardCapacity","CardCapacityStatusNotSet","CardComdClasses","ContentProtectAppli","CopyFlag","DSRImpl","DeviceSize","ECC","EraseGrMul","EraseGrSize","FileFormat","FileFormatGroup","HIGH_SPEED_ENABLE","InitError","ManDeflECC","ManufactDate","ManufacturerID","MaxBusClkFrec","MaxWrBlockLen","NSAC","OEM_AppliID","PERIPHERALS","PartBlockRead","PermWrProtect","ProdName1","ProdName2","ProdRev","ProdSN","RdBlockLen","RdBlockMisalign","Reserved1","Reserved1","Reserved2","Reserved2","Reserved3","Reserved4","SDCard","SDCardCID","SDCardCSD","SDCardInfo","SDCardWrapper","SD_CS","SD_CS_GPIONUM","SD_START_DATA_MULTIPLE_BLOCK_READ","SD_START_DATA_MULTIPLE_BLOCK_WRITE","SD_START_DATA_SINGLE_BLOCK_READ","SD_START_DATA_SINGLE_BLOCK_WRITE","SD_cid","SD_csd","SEC_LEN","SysSpecVersion","TAAC","TempWrProtect","WrBlockMisalign","WrProtectGrEnable","WrProtectGrSize","WrSpeedFact","WriteBlockPaPartial","__private_field","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cs_gpionum","deref","end_cmd","eq","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","get_cardinfo","get_cidregister","get_csdregister","get_dataresponse","get_response","handle_irq","init","init_sdcard","into","into","into","into","into","into","into","into","io_init","lowlevel_init","new","new","read_block","read_data","read_sector","send_cmd","spi","spi_cs","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","write_block","write_data","write_sector","0","0","1","QUEUE_FRAMES","VIRTIO0","VirtIOBlock","__private_field","borrow","borrow","borrow_mut","borrow_mut","condvars","deref","from","from","handle_irq","into","into","new","read_block","try_from","try_from","try_into","try_into","type_id","type_id","virtio_blk","virtio_dma_alloc","virtio_dma_dealloc","virtio_phys_to_virt","virtio_virt_to_phys","write_block","CharDevice","UART","__private_field","borrow","borrow_mut","deref","from","handle_irq","into","ns16550a","read","try_from","try_into","type_id","write","AUX_OUTPUT1","AUX_OUTPUT2","DATA_AVAILABLE","DATA_TERMINAL_READY","IER","LSR","MCR","NS16550a","NS16550aInner","NS16550aRaw","REQUEST_TO_SEND","RX_AVALIABLE","ReadWithoutDLAB","THR_EMPTY","TX_EMPTY","WriteWithoutDLAB","_padding0","_padding1","_padding1","_padding2","all","all","all","base_addr","bitand","bitand","bitand","bitand_assign","bitand_assign","bitand_assign","bitor","bitor","bitor","bitor_assign","bitor_assign","bitor_assign","bits","bits","bits","bits","bits","bits","bitxor","bitxor","bitxor","bitxor_assign","bitxor_assign","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","cmp","complement","complement","complement","condvar","contains","contains","contains","difference","difference","difference","empty","empty","empty","eq","eq","eq","extend","extend","extend","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_bits","from_bits","from_bits","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_iter","from_iter","from_iter","handle_irq","hash","hash","hash","ier","ier","iir","init","inner","insert","insert","insert","intersection","intersection","intersection","intersects","intersects","intersects","into","into","into","into","into","into","into","into","is_all","is_all","is_all","is_empty","is_empty","is_empty","lcr","lcr","lsr","lsr","mcr","mcr","ne","ne","ne","new","new","not","not","not","ns16550a","partial_cmp","partial_cmp","partial_cmp","rbr","read","read","read_buffer","read_end","remove","remove","remove","set","set","set","sub","sub","sub","sub_assign","sub_assign","sub_assign","symmetric_difference","symmetric_difference","symmetric_difference","thr","to_owned","to_owned","to_owned","toggle","toggle","toggle","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","union","union","union","write","write","write_end","IntrTargetPriority","Machine","PLIC","Supervisor","base_addr","borrow","borrow","borrow_mut","borrow_mut","claim","claim_comp_ptr_of_hart_with_priority","clone","clone_into","complete","disable","enable","enable_ptr","from","from","get_priority","get_threshold","hart_id_with_priority","into","into","new","priority_ptr","set_priority","set_threshold","supported_number","threshold_ptr_of_hart_with_priority","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","File","inode","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","ne","new","not","offset","open_file","partial_cmp","read","read_all","read_write","readable","readable","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","read","read_byte","read_end_with_buffer","readable","readable","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","borrow","borrow","borrow_mut","borrow_mut","from","from","into","into","read","read","readable","readable","try_from","try_from","try_into","try_into","type_id","type_id","writable","writable","write","write","backtrace","panic","address","frame_allocator","heap_allocator","init","memory_set","page_table","0","0","0","0","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","ceil","ceil","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","get_start","indexes","into","into","into","into","into","into","into_iter","into_iter","l","ne","ne","ne","ne","new","new","next","page_offset","page_offset","partial_cmp","partial_cmp","partial_cmp","partial_cmp","r","step","step","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc","deref","drop","end","fmt","frame_alloc","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","ppn","recycled","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","ne","new","new_bare","new_kernel","not","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","vpn_range","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","ne","new","new","new","next","not","partial_cmp","ppn","readable","remove","root_ppn","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","writable","SBI_CLEAR_IPI","SBI_CONSOLE_GETCHAR","SBI_CONSOLE_PUTCHAR","SBI_REMOTE_FENCE_I","SBI_REMOTE_SFENCE_VMA","SBI_REMOTE_SFENCE_VMA_ASID","SBI_SEND_IPI","SBI_SET_TIMER","SBI_SHUTDOWN","console_getchar","console_putchar","sbi_call","set_timer","shutdown","condvar","mutex","semaphore","up","Condvar","CondvarInner","borrow","borrow","borrow_mut","borrow_mut","from","from","inner","into","into","new","signal","try_from","try_from","try_into","try_into","type_id","type_id","wait_no_sched","wait_queue","wait_with_mutex","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","wait_queue","Semaphore","SemaphoreInner","borrow","borrow","borrow_mut","borrow_mut","count","down","from","from","inner","into","into","new","try_from","try_from","try_into","try_into","type_id","type_id","up","wait_queue","0","INTR_MASKING_INFO","IntrMaskingInfo","UPIntrFreeCell","UPIntrRefMut","UPSafeCellRaw","__private_field","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref_mut","drop","enter","exclusive_access","exclusive_session","exit","from","from","from","from","from","get_mut","inner","inner","into","into","into","into","into","nested_level","new","new","new","sie_before_masking","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_DUP","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KILL","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","INITPROC","__private_field","add_initproc","block_current_and_run_next","block_current_task","borrow","borrow_mut","check_signals_of_current","context","current_add_signal","deref","exit_current_and_run_next","from","id","into","manager","process","processor","signal","suspend_current_and_run_next","switch","task","try_from","try_into","type_id","TaskContext","borrow","borrow_mut","from","goto_trap_return","into","ra","s","sp","try_from","try_into","type_id","zero_init","0","0","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","pid_alloc","process","push_on_top","recycled","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","pid2process","ready_queue","remove_from_pid2process","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","borrow","borrow","borrow_mut","borrow_mut","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","parent","pid","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","PROCESSOR","Processor","__private_field","borrow","borrow","borrow_mut","borrow_mut","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","run_tasks","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","check_error","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","ne","not","partial_cmp","remove","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","__switch","Blocking","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","process","res","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","borrow","borrow","borrow_mut","borrow_mut","check_timer","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","partial_cmp","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","context","disable_supervisor_interrupt","enable_supervisor_interrupt","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","borrow","borrow_mut","fmt","from","into","kernel_satp","kernel_sp","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","x"],"q":["os","","","","","","","","","","","","","","","","","","","","","","","","","","","os::board","","","","","","","","os::config","","","","","","","","os::console","","","","","","","","","","os::drivers","","","os::drivers::block","","","","","","","","","","","","","os::drivers::block::sdcard","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::block::sdcard::InitError","","","os::drivers::block::virtio_blk","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::chardev","","","","","","","","","","","","","","","os::drivers::chardev::ns16550a","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::drivers::plic","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::fs","","","","","","","","os::fs::inode","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::fs::pipe","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::fs::stdio","","","","","","","","","","","","","","","","","","","","","","","","os::lang_items","","os::mm","","","","","","os::mm::address","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::mm::frame_allocator","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::mm::heap_allocator","","","","","os::mm::memory_set","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::mm::page_table","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::sbi","","","","","","","","","","","","","","os::sync","","","","os::sync::condvar","","","","","","","","","","","","","","","","","","","","","","os::sync::mutex","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::sync::semaphore","","","","","","","","","","","","","","","","","","","","","","os::sync::up","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::syscall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::syscall::fs","","","","","","os::syscall::process","","","","","","","","os::syscall::sync","","","","","","","","","","os::syscall::thread","","","os::task","","","","","","","","","","","","","","","","","","","","","","","","","os::task::context","","","","","","","","","","","","","os::task::id","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::manager","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::process","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::processor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::signal","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::task::switch","os::task::task","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::timer","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","os::trap","","","","","","","","","","os::trap::context","","","","","","","","","","","","","","","",""],"d":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Number of blocks to erase (SDC) ","Initiate initialization process (SDC) ","","SD commands ","Software reset ","Read CID register ","Stop to read data ","Change R/W block size ","Read block ","Read multiple blocks ","Write a block ","Write multiple blocks ","Leading command for ACMD* ","Read OCR ","Enable/disable CRC check ","Check voltage range (SDC V2) ","Read CSD register ","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Card Identification Data: CID Register","Card Specific Data: CSD Register","Card information","","CS value passed to SPI controller, this is a dummy value …","GPIOHS GPIO number to use for controlling the SD card CS …","Data token start byte, Start Multiple Block Read ","Data token start byte, Start Multiple Block Write ","Data token start byte, Start Single Block Read ","Data token start byte, Start Single Block Write ","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Connect pins to internal functions ","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","InterruptEnableRegister","LineStatusRegister","Model Control Register","","","","","","","","","","ignore FCR","ignore MSR","ignore other registers","ignore SCR","Returns the set containing all flags.","Returns the set containing all flags.","Returns the set containing all flags.","","Returns the intersection between the two sets of flags.","Returns the intersection between the two sets of flags.","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Disables all flags disabled in the set.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Returns the union of the two sets of flags.","Returns the union of the two sets of flags.","Adds the set of flags.","Adds the set of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","Returns the raw value of the flags currently stored.","Returns the raw value of the flags currently stored.","","","","Returns the left flags, but with all the right flags …","Returns the left flags, but with all the right flags …","Returns the left flags, but with all the right flags …","Toggles the set of flags.","Toggles the set of flags.","Toggles the set of flags.","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the complement of this set of flags.","Returns the complement of this set of flags.","Returns the complement of this set of flags.","","Returns true if all of the flags in other are contained …","Returns true if all of the flags in other are contained …","Returns true if all of the flags in other are contained …","Returns the difference between the flags in self and other.","Returns the difference between the flags in self and other.","Returns the difference between the flags in self and other.","Returns an empty set of flags.","Returns an empty set of flags.","Returns an empty set of flags.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","Convert from underlying bit representation, preserving all …","Convert from underlying bit representation, preserving all …","","","","","","","","interrupt enable register","interrupt enable register","interrupt identification register","","","Inserts the specified flags in-place.","Inserts the specified flags in-place.","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns the intersection between the flags in self and …","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Returns true if there are flags common to both self and …","Returns true if there are flags common to both self and …","","","","","","","","","Returns true if all flags are currently set.","Returns true if all flags are currently set.","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","Returns true if no flags are currently stored.","Returns true if no flags are currently stored.","line control register","line control register","line status register","line status register","model control register","modem control register","","","","","","Returns the complement of this set of flags.","Returns the complement of this set of flags.","Returns the complement of this set of flags.","","","","","receiver buffer register","","","","","Removes the specified flags in-place.","Removes the specified flags in-place.","Removes the specified flags in-place.","Inserts or removes the specified flags depending on the …","Inserts or removes the specified flags depending on the …","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Returns the set difference of the two sets of flags.","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Disables all flags enabled in the set.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","Returns the symmetric difference between the flags in self …","Returns the symmetric difference between the flags in self …","transmitter holding register","","","","Toggles the specified flags in-place.","Toggles the specified flags in-place.","Toggles the specified flags in-place.","","","","","","","","","","","","","","","","","","","","","","","","","Returns the union of between the flags in self and other.","Returns the union of between the flags in self and other.","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the set containing all flags.","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","","Returns the difference between the flags in self and other.","Returns an empty set of flags.","","","","","","","","","","","","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","","","","","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","","","","","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","","","Returns the complement of this set of flags.","","","","","","Do not check validity for simplicity Return (readable, …","","","Removes the specified flags in-place.","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","Toggles the specified flags in-place.","","","","","","","","","","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Return (read_end, write_end)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Definitions","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the set containing all flags.","","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","","","","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","data: start-aligned but maybe with shorter length assume …","","","Returns the difference between the flags in self and other.","","","","Returns an empty set of flags.","","","","","","","","","","","","","","","","","","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","Include sections in elf and trampoline, also returns …","","","","Inserts the specified flags in-place.","Assume that no conflicts.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","","","","","","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","","","","Mention that trampoline is not collected by areas.","","","","","Without kernel stacks.","Returns the complement of this set of flags.","","","","","","Removes the specified flags in-place.","","","","Inserts or removes the specified flags depending on the …","","","","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","","Toggles the specified flags in-place.","","","","","","","","","","","","","","","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","Returns the set containing all flags.","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","","","","","","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","","","Returns the difference between the flags in self and other.","Returns an empty set of flags.","","","","","","","","","","","","","","","","","","","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","","Temporarily used to get arguments from user space.","","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","","","","","","","","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","","","","","","","","Returns the complement of this set of flags.","","","","Removes the specified flags in-place.","","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","","Toggles the specified flags in-place.","","","","","","","Load a string from other address spaces into kernel space …","","","","","","","","","","","","","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Panic if the data has been borrowed.","","","","","","","","","","inner data","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","If there is not a child process whose pid is same as …","","","","","","","","","","","","","","thread does not exist, return -1 thread has not exited …","","","","","This function must be followed by a schedule","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Return (bottom, top) of a kernel stack in kernel space.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Only support processes with a single thread.","","","Only support processes with a single thread.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the set containing all flags.","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","Returns the difference between the flags in self and other.","Returns an empty set of flags.","","","","","","","","","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","","","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","Returns the complement of this set of flags.","","Removes the specified flags in-place.","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","Toggles the specified flags in-place.","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,1,0,1,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,2,2,2,2,0,0,0,0,3,0,3,3,3,3,3,0,3,3,3,0,4,5,5,6,0,5,5,5,5,5,5,5,5,5,5,5,5,5,7,8,8,9,9,7,10,10,7,8,8,8,8,8,8,8,8,8,8,9,0,8,6,6,8,8,8,6,0,8,8,6,6,6,6,8,8,8,6,8,6,8,8,0,0,0,0,0,0,0,0,0,0,0,10,10,0,8,8,8,8,8,8,8,8,11,9,4,5,7,8,6,10,11,9,4,5,7,8,6,10,11,5,7,8,6,10,5,7,8,6,10,9,11,9,5,5,7,8,6,10,9,4,5,7,8,6,10,11,9,9,9,9,9,4,9,0,9,4,5,7,8,6,10,11,0,9,9,4,4,9,9,9,9,9,5,7,8,6,10,9,4,5,7,8,6,10,11,9,4,5,7,8,6,10,11,9,4,5,7,8,6,10,11,4,9,9,12,13,12,0,0,0,14,15,14,15,14,15,14,15,14,15,15,14,15,15,15,14,15,14,15,14,15,0,0,0,0,15,0,0,16,16,16,16,16,17,16,0,17,16,16,16,17,18,18,19,18,0,0,0,0,0,0,18,20,0,19,20,0,21,22,21,22,20,19,18,23,20,19,18,20,19,18,20,19,18,20,19,18,20,19,18,20,19,18,20,19,18,20,19,18,22,21,23,24,25,20,19,18,22,21,23,24,25,20,19,18,20,19,18,20,19,18,20,19,18,20,19,18,25,20,19,18,20,19,18,20,19,18,20,19,18,20,19,18,20,20,20,20,20,19,19,19,19,19,18,18,18,18,18,22,21,23,24,25,20,19,18,20,19,18,20,19,18,20,19,18,20,19,18,25,20,19,18,22,21,22,23,25,20,19,18,20,19,18,20,19,18,22,21,23,24,25,20,19,18,20,19,18,20,19,18,22,21,22,21,22,21,20,19,18,23,25,20,19,18,24,20,19,18,22,23,25,24,23,20,19,18,20,19,18,20,19,18,20,19,18,20,19,18,21,20,19,18,20,19,18,22,21,23,24,25,20,19,18,22,21,23,24,25,20,19,18,22,21,23,24,25,20,19,18,20,19,18,23,25,23,0,26,0,26,27,27,26,27,26,27,27,26,26,27,27,27,27,27,26,27,27,27,27,26,27,27,27,27,26,27,26,27,26,27,26,27,26,0,0,0,28,28,0,28,28,29,0,0,0,29,29,0,29,29,30,29,29,29,29,29,29,29,29,29,31,32,30,29,31,32,30,29,29,29,29,29,29,30,29,29,29,29,29,29,29,29,29,31,32,30,29,29,29,29,29,29,31,32,29,29,29,31,32,30,29,29,29,0,29,31,29,32,0,29,31,31,29,31,31,29,29,29,29,29,29,29,31,32,30,29,31,32,30,29,31,32,30,29,29,31,31,31,33,33,33,0,0,0,0,34,34,34,34,35,34,33,35,34,33,35,33,33,33,35,34,33,34,35,34,33,0,34,35,34,35,35,35,34,34,34,33,35,34,33,35,34,33,35,34,33,35,35,35,34,34,35,0,0,36,37,36,37,36,37,36,37,36,37,36,37,36,37,36,37,36,37,36,37,36,37,0,0,0,0,0,0,0,0,38,39,40,41,0,0,0,0,0,0,0,0,0,0,0,0,38,39,42,38,39,40,41,43,42,38,39,40,41,43,38,39,38,39,40,41,43,38,39,40,41,43,38,39,40,41,42,42,38,39,40,41,38,39,38,39,40,41,42,38,38,38,39,39,39,40,40,40,41,41,41,43,40,43,38,40,40,38,43,41,42,38,39,40,41,43,42,43,43,38,39,40,41,42,43,42,38,39,38,39,40,41,43,44,40,41,38,39,40,41,43,42,38,39,40,41,43,42,38,39,40,41,43,42,38,39,40,41,43,0,0,0,0,0,45,46,47,48,47,45,48,47,45,47,46,47,45,48,47,48,0,0,0,48,47,45,47,0,48,47,45,46,48,47,48,47,48,47,45,48,47,45,48,47,45,0,0,0,0,0,49,49,0,0,0,0,0,50,50,50,50,51,52,50,52,50,50,50,50,50,50,50,50,52,53,51,49,50,52,53,51,49,50,49,50,49,50,50,50,50,53,53,51,50,0,0,0,50,49,50,0,0,50,49,50,50,50,50,50,52,53,51,49,50,53,50,50,50,52,52,50,50,50,52,50,50,52,53,51,49,50,50,50,0,53,53,53,52,53,50,53,52,52,50,52,50,52,52,0,50,52,0,0,50,0,0,0,50,50,50,49,50,50,52,52,52,53,51,49,50,52,53,51,49,50,52,53,51,49,50,50,53,53,53,54,54,54,0,0,0,54,54,0,0,54,54,54,54,54,54,54,54,54,54,55,54,54,56,57,58,54,55,56,57,58,54,55,57,58,54,55,54,55,54,54,54,58,58,54,54,55,54,55,54,56,56,55,54,54,54,54,54,56,56,57,58,54,55,54,54,54,54,56,54,54,54,54,56,57,58,54,55,57,58,54,54,55,57,56,54,56,57,55,58,54,54,55,55,54,56,54,54,54,54,54,55,54,56,56,56,0,0,0,0,56,57,58,54,55,56,57,58,54,55,56,57,58,54,55,54,56,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,60,59,60,59,60,59,59,60,59,59,59,60,59,60,59,60,59,60,59,0,0,0,0,61,62,63,61,62,63,61,62,63,62,61,62,63,64,61,62,61,63,61,62,61,62,63,61,62,63,61,62,63,64,61,62,63,0,0,65,66,65,66,66,65,65,66,65,65,66,65,65,66,65,66,65,66,65,66,67,0,0,0,0,0,68,69,70,71,67,68,69,70,71,67,68,67,68,67,67,70,71,71,70,69,70,71,67,68,69,69,71,69,70,71,67,68,70,69,70,71,70,69,70,71,67,68,69,70,71,67,68,69,70,71,67,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,0,0,0,72,72,0,0,0,72,0,72,0,72,0,0,0,0,0,0,0,72,72,72,0,73,73,73,73,73,73,73,73,73,73,73,73,74,75,0,0,0,0,0,0,76,77,78,79,79,78,74,75,79,76,77,78,74,75,79,76,77,78,78,79,79,76,77,74,75,79,78,74,75,79,76,77,75,78,74,75,79,76,77,0,0,78,79,0,79,75,78,79,0,79,79,78,74,75,79,76,77,78,74,75,79,76,77,78,74,75,79,76,77,79,79,0,79,0,0,0,80,81,82,0,82,80,81,82,80,81,80,81,82,0,82,80,81,0,82,80,81,82,0,82,0,82,80,81,82,80,81,82,80,81,0,0,83,83,84,83,84,83,83,83,83,84,83,83,84,84,83,83,83,84,84,84,84,83,83,83,83,84,83,84,83,83,83,83,83,84,83,84,83,84,83,0,0,85,86,85,86,85,86,86,0,0,0,0,0,0,85,86,85,86,86,86,85,86,0,0,86,0,86,85,86,85,86,85,87,87,87,87,87,0,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,0,88,88,88,0,0,0,89,90,88,89,90,88,88,88,88,90,89,90,88,90,90,89,89,89,89,90,88,89,89,89,90,90,90,88,90,89,90,88,89,90,88,89,90,88,0,0,0,0,91,0,92,91,92,91,0,92,91,92,92,92,91,0,0,92,91,92,0,92,92,91,92,91,92,91,0,0,0,0,0,0,0,0,0,0,0,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93],"f":[null,null,null,[[]],[[]],[[]],null,null,[[],["upintrfreecell",3]],null,[[]],null,[[]],null,null,null,null,[[],["never",15]],null,null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,null,null,null,null,[[]],[[]],null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[["arguments",3]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[["str",15]],["result",6]],null,null,null,null,null,[[]],[[]],[[]],[[],["arc",3]],[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["cmd",4]],[[],["initerror",4]],[[],["sdcardcsd",3]],[[],["sdcardcid",3]],[[],["sdcardinfo",3]],[[]],[[]],[[]],[[]],[[]],null,[[],["upintrfreecell",3]],[[]],[[["cmd",4]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4,[["sdcardinfo",3]]]],[[],["result",4,[["sdcardcid",3]]]],[[],["result",4,[["sdcardcsd",3]]]],[[],["u8",15]],[[],["u8",15]],[[]],[[],["result",4,[["sdcardinfo",3],["initerror",4]]]],[[],["sdcard",3,[["spiimpl",3,[["spi0",3]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["u32",15],["u8",15]]],[[]],[[["usize",15]]],[[]],[[["u32",15]],["result",4]],[[["cmd",4],["u32",15],["u8",15]]],null,null,[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["usize",15]]],[[]],[[["u32",15]],["result",4]],null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],null,[[],["upintrfreecell",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[["usize",15]],["physaddr",3]],[[["physaddr",3],["usize",15]],["i32",15]],[[["physaddr",3]],["virtaddr",3]],[[["virtaddr",3]],["physaddr",3]],[[["usize",15]]],null,null,null,[[]],[[]],[[],["arc",3]],[[]],[[]],[[]],null,[[],["u8",15]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[["u8",15]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[["ier",3]]],[[["lsr",3]]],[[["mcr",3]]],[[]],[[]],[[]],[[],["u8",15]],[[],["u8",15]],[[],["u8",15]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["ier",3]],[[],["lsr",3]],[[],["mcr",3]],[[]],[[]],[[]],[[["ier",3]],["ordering",4]],[[["lsr",3]],["ordering",4]],[[["mcr",3]],["ordering",4]],[[]],[[]],[[]],null,[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[["ier",3]],["bool",15]],[[["lsr",3]],["bool",15]],[[["mcr",3]],["bool",15]],[[["intoiterator",8]]],[[["intoiterator",8]]],[[["intoiterator",8]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["u8",15]],["option",4]],[[["u8",15]],["option",4]],[[["u8",15]],["option",4]],[[["u8",15]]],[[["u8",15]]],[[["u8",15]]],[[["u8",15]]],[[["u8",15]]],[[["u8",15]]],[[["intoiterator",8]]],[[["intoiterator",8]]],[[["intoiterator",8]]],[[]],[[]],[[]],[[]],null,null,null,[[]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],null,null,null,null,null,null,[[["ier",3]],["bool",15]],[[["lsr",3]],["bool",15]],[[["mcr",3]],["bool",15]],[[["usize",15]]],[[]],[[]],[[]],[[]],null,[[["ier",3]],["option",4,[["ordering",4]]]],[[["lsr",3]],["option",4,[["ordering",4]]]],[[["mcr",3]],["option",4,[["ordering",4]]]],null,[[],["option",4,[["u8",15]]]],[[],["u8",15]],null,[[],["readwithoutdlab",3]],[[]],[[]],[[]],[[["bool",15]]],[[["bool",15]]],[[["bool",15]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[["u8",15]]],[[["u8",15]]],[[],["writewithoutdlab",3]],null,null,null,null,null,[[]],[[]],[[]],[[]],[[["usize",15],["intrtargetpriority",4]],["u32",15]],[[["usize",15],["intrtargetpriority",4]]],[[],["intrtargetpriority",4]],[[]],[[["usize",15],["intrtargetpriority",4],["u32",15]]],[[["usize",15],["intrtargetpriority",4],["usize",15]]],[[["usize",15],["intrtargetpriority",4],["usize",15]]],[[["usize",15],["intrtargetpriority",4],["usize",15]]],[[]],[[]],[[["usize",15]],["u32",15]],[[["usize",15],["intrtargetpriority",4]],["u32",15]],[[["usize",15],["intrtargetpriority",4]],["usize",15]],[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15],["u32",15]]],[[["usize",15],["intrtargetpriority",4],["u32",15]]],[[],["usize",15]],[[["usize",15],["intrtargetpriority",4]]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,[[["userbuffer",3]],["usize",15]],[[],["bool",15]],null,[[],["bool",15]],[[["userbuffer",3]],["usize",15]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[["openflags",3]]],[[]],[[],["u32",15]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["openflags",3]],[[]],[[["openflags",3]],["ordering",4]],[[]],[[],["bool",15]],[[],["arc",3]],[[]],[[]],[[["openflags",3]],["bool",15]],[[["intoiterator",8]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["u32",15]],["option",4]],[[["u32",15]]],[[["u32",15]]],[[["intoiterator",8]]],[[]],null,null,[[]],[[]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["bool",15]],[[]],[[["openflags",3]],["bool",15]],[[["bool",15],["bool",15],["arc",3,[["inode",3]]]]],[[]],null,[[["str",15],["openflags",3]],["option",4,[["arc",3,[["osinode",3]]]]]],[[["openflags",3]],["option",4,[["ordering",4]]]],[[["userbuffer",3]],["usize",15]],[[],["vec",3,[["u8",15]]]],[[]],[[],["bool",15]],null,[[]],[[["bool",15]]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[],["bool",15]],null,[[["userbuffer",3]],["usize",15]],null,null,null,null,null,null,null,[[],["bool",15]],null,[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[],["ringbufferstatus",4]],[[]],[[["ringbufferstatus",4]],["bool",15]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[["userbuffer",3]],["usize",15]],[[],["u8",15]],[[["arc",3,[["upintrfreecell",3,[["piperingbuffer",3]]]]]]],[[],["bool",15]],null,[[["arc",3]]],null,null,[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["bool",15]],null,[[["userbuffer",3]],["usize",15]],[[["u8",15]]],null,[[["arc",3,[["upintrfreecell",3,[["piperingbuffer",3]]]]]]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["userbuffer",3]],["usize",15]],[[["userbuffer",3]],["usize",15]],[[],["bool",15]],[[],["bool",15]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["bool",15]],[[],["bool",15]],[[["userbuffer",3]],["usize",15]],[[["userbuffer",3]],["usize",15]],[[]],[[["panicinfo",3]],["never",15]],null,null,null,[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],["bool",15]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["physpagenum",3]],[[],["virtpagenum",3]],[[],["physaddr",3]],[[],["virtaddr",3]],[[],["physpagenum",3]],[[],["virtpagenum",3]],[[],["simplerange",3]],[[]],[[]],[[]],[[]],[[]],[[["physaddr",3]],["ordering",4]],[[["virtaddr",3]],["ordering",4]],[[["physpagenum",3]],["ordering",4]],[[["virtpagenum",3]],["ordering",4]],null,null,[[["physaddr",3]],["bool",15]],[[["virtaddr",3]],["bool",15]],[[["physpagenum",3]],["bool",15]],[[["virtpagenum",3]],["bool",15]],[[],["physpagenum",3]],[[],["virtpagenum",3]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[["usize",15]]],[[["physpagenum",3]]],[[]],[[["usize",15]]],[[["virtpagenum",3]]],[[]],[[["physaddr",3]]],[[["usize",15]]],[[]],[[["usize",15]]],[[]],[[["virtaddr",3]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["physaddr",3]],["bool",15]],[[["virtaddr",3]],["bool",15]],[[["physpagenum",3]],["bool",15]],[[["virtpagenum",3]],["bool",15]],[[]],[[]],[[],["option",4]],[[],["usize",15]],[[],["usize",15]],[[["physaddr",3]],["option",4,[["ordering",4]]]],[[["virtaddr",3]],["option",4,[["ordering",4]]]],[[["physpagenum",3]],["option",4,[["ordering",4]]]],[[["virtpagenum",3]],["option",4,[["ordering",4]]]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,null,[[],["option",4,[["physpagenum",3]]]],[[],["option",4,[["physpagenum",3]]]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["physpagenum",3]]],[[["physpagenum",3]]],[[],["upintrfreecell",3]],[[]],null,[[["formatter",3]],["result",6]],[[],["option",4,[["frametracker",3]]]],[[]],[[["physpagenum",3]]],[[]],[[]],[[]],[[["physpagenum",3],["physpagenum",3]]],[[]],[[]],[[]],[[]],[[]],[[["physpagenum",3]]],[[]],null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[["layout",3]],["never",15]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],null,[[]],[[]],[[["mappermission",3]]],[[]],[[],["u8",15]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["maptype",4]],[[],["mappermission",3]],[[]],[[]],[[["mappermission",3]],["ordering",4]],[[]],[[],["bool",15]],[[["pagetable",3]]],null,[[],["arc",3]],[[]],null,null,null,[[]],[[["maptype",4]],["bool",15]],[[["mappermission",3]],["bool",15]],null,null,[[["intoiterator",8]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[["maparea",3]]],[[["u8",15]],["option",4]],[[["u8",15]]],[[["u8",15]]],[[]],[[["memoryset",3]],["memoryset",3]],[[["intoiterator",8]]],[[]],[[]],[[["virtaddr",3],["virtaddr",3],["mappermission",3]]],[[]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["bool",15]],[[],["usize",15]],[[["pagetable",3]]],[[["pagetable",3],["virtpagenum",3]]],null,[[]],null,[[["mappermission",3]],["bool",15]],[[["virtaddr",3],["virtaddr",3],["maptype",4],["mappermission",3]]],[[]],[[]],[[]],null,[[["mappermission",3]],["option",4,[["ordering",4]]]],[[["maparea",3],["option",4]]],[[]],[[]],[[]],[[["virtpagenum",3]]],null,null,[[["bool",15]]],null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[["pagetable",3]]],[[["pagetable",3],["virtpagenum",3]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[["pteflags",3]]],[[]],[[],["u8",15]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[],["pteflags",3]],[[],["pagetableentry",3]],[[]],[[]],[[["pteflags",3]],["ordering",4]],[[]],[[],["bool",15]],null,null,[[]],[[]],[[]],[[["pteflags",3]],["bool",15]],[[],["bool",15]],[[["intoiterator",8]]],[[["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[],["pteflags",3]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],null,[[]],[[]],[[]],[[]],[[]],[[["u8",15]],["option",4]],[[["u8",15]]],[[["u8",15]]],[[["intoiterator",8]]],[[["usize",15]]],[[]],[[]],[[]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["usize",15]],[[["virtpagenum",3],["physpagenum",3],["pteflags",3]]],[[["pteflags",3]],["bool",15]],[[]],[[["vec",3]]],[[["physpagenum",3],["pteflags",3]]],[[],["option",4]],[[]],[[["pteflags",3]],["option",4,[["ordering",4]]]],[[],["physpagenum",3]],[[],["bool",15]],[[]],null,[[["bool",15]]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[["virtpagenum",3]],["option",4,[["pagetableentry",3]]]],[[["virtaddr",3]],["option",4,[["physaddr",3]]]],[[["usize",15],["usize",15]],["vec",3]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[["virtpagenum",3]]],[[],["bool",15]],null,null,null,null,null,null,null,null,null,[[],["usize",15]],[[["usize",15]]],[[["usize",15],["usize",15],["usize",15],["usize",15]],["usize",15]],[[["usize",15]]],[[],["never",15]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],null,[[["arc",3,[["mutex",8]]]]],null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,null,null,[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],null,[[]],[[]],[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["upsafecellraw",3]],[[]],[[]],[[]],[[],["upintrrefmut",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["usize",15]],["isize",15]],null,[[["usize",15]],["isize",15]],[[["usize",15]],["isize",15]],[[["u32",15]],["isize",15]],[[],["isize",15]],[[["usize",15],["usize",15]],["isize",15]],[[["usize",15],["usize",15]],["isize",15]],[[],["isize",15]],[[["i32",15]],["never",15]],[[],["isize",15]],[[],["isize",15]],[[],["isize",15]],[[["usize",15],["u32",15]],["isize",15]],[[["isize",15]],["isize",15]],[[],["isize",15]],[[["usize",15]],["isize",15]],[[["usize",15]],["isize",15]],[[["usize",15],["usize",15]],["isize",15]],[[["bool",15]],["isize",15]],[[["usize",15]],["isize",15]],[[["usize",15]],["isize",15]],[[["usize",15]],["isize",15]],[[["usize",15]],["isize",15]],[[["usize",15]],["isize",15]],[[["usize",15]],["isize",15]],[[],["isize",15]],[[["usize",15],["usize",15]],["isize",15]],[[["usize",15]],["i32",15]],null,null,[[]],[[]],[[]],[[]],[[]],[[],["option",4]],null,[[["signalflags",3]]],[[],["arc",3]],[[["i32",15]]],[[]],null,[[]],null,null,null,null,[[]],null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],[[]],[[]],[[["usize",15]]],[[]],null,null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,null,null,null,[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,[[["usize",15]]],[[]],[[]],[[],["upintrfreecell",3]],[[],["upintrfreecell",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[["usize",15]]],[[],["kernelstack",3]],[[]],[[["arc",3,[["processcontrolblock",3]]],["usize",15],["bool",15]]],[[],["pidhandle",3]],null,[[]],null,null,[[["usize",15]],["usize",15]],[[],["physpagenum",3]],[[],["usize",15]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["usize",15]],null,[[["usize",15],["usize",15]],["usize",15]],[[],["usize",15]],null,null,null,null,null,[[["arc",3,[["taskcontrolblock",3]]]]],[[["arc",3,[["taskcontrolblock",3]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["upintrfreecell",3]],[[],["upintrfreecell",3]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[]],[[]],[[]],[[["usize",15],["arc",3,[["processcontrolblock",3]]]]],[[]],[[]],[[]],[[]],[[["usize",15]],["option",4,[["arc",3,[["processcontrolblock",3]]]]]],null,[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],null,null,[[["usize",15]]],[[["arc",3],["vec",3,[["string",3]]]]],null,null,[[["arc",3]],["arc",3]],[[]],[[]],[[["usize",15]],["arc",3,[["taskcontrolblock",3]]]],[[],["usize",15]],[[],["usize",15]],null,[[],["upintrrefmut",3,[["processcontrolblockinner",3]]]],[[]],[[]],null,null,null,[[],["arc",3]],null,null,null,null,null,null,[[],["usize",15]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,[[]],[[]],[[]],[[]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],null,[[],["usize",15]],[[],["arc",3,[["processcontrolblock",3]]]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["trapcontext",3]],[[],["usize",15]],[[],["usize",15]],[[],["upintrfreecell",3]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["option",4,[["arc",3,[["taskcontrolblock",3]]]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,null,[[]],[[]],[[]],[[["signalflags",3]]],[[]],[[],["u32",15]],null,[[]],[[]],[[]],[[]],[[],["option",4]],[[],["signalflags",3]],[[]],[[["signalflags",3]],["ordering",4]],[[]],[[],["bool",15]],[[]],[[]],[[["signalflags",3]],["bool",15]],[[["intoiterator",8]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[["u32",15]],["option",4]],[[["u32",15]]],[[["u32",15]]],[[["intoiterator",8]]],[[]],[[]],[[]],[[],["bool",15]],[[]],[[],["bool",15]],[[],["bool",15]],[[["signalflags",3]],["bool",15]],[[]],[[["signalflags",3]],["option",4,[["ordering",4]]]],[[]],[[["bool",15]]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["taskstatus",4]],[[]],[[["taskstatus",4]],["bool",15]],null,[[]],[[]],[[]],[[],["taskstatus",4]],[[],["trapcontext",3]],[[],["usize",15]],null,[[],["upintrrefmut",3,[["taskcontrolblockinner",3]]]],[[]],[[]],[[]],null,[[["arc",3,[["processcontrolblock",3]]],["usize",15],["bool",15]]],null,null,null,null,[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,[[["usize",15],["arc",3,[["taskcontrolblock",3]]]]],[[]],[[]],[[]],[[]],[[]],[[],["ordering",4]],[[],["upintrfreecell",3]],[[],["bool",15]],null,[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[],["option",4,[["ordering",4]]]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[["trapcontext",3]]],[[],["never",15]],[[],["never",15]],null,[[["usize",15],["usize",15],["usize",15],["usize",15],["usize",15]]],[[]],[[]],[[["formatter",3]],["result",6]],[[]],[[]],null,null,null,[[["usize",15]]],null,null,[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null],"p":[[3,"DEV_NON_BLOCKING_ACCESS"],[3,"Stdout"],[3,"BLOCK_DEVICE"],[3,"SDCardWrapper"],[4,"CMD"],[3,"SDCardCID"],[4,"InitError"],[3,"SDCardCSD"],[3,"SDCard"],[3,"SDCardInfo"],[3,"PERIPHERALS"],[13,"CMDFailed"],[13,"CardCapacityStatusNotSet"],[3,"QUEUE_FRAMES"],[3,"VirtIOBlock"],[3,"UART"],[8,"CharDevice"],[3,"MCR"],[3,"LSR"],[3,"IER"],[3,"WriteWithoutDLAB"],[3,"ReadWithoutDLAB"],[3,"NS16550aRaw"],[3,"NS16550aInner"],[3,"NS16550a"],[4,"IntrTargetPriority"],[3,"PLIC"],[8,"File"],[3,"OpenFlags"],[3,"ROOT_INODE"],[3,"OSInode"],[3,"OSInodeInner"],[4,"RingBufferStatus"],[3,"PipeRingBuffer"],[3,"Pipe"],[3,"Stdin"],[3,"Stdout"],[3,"PhysAddr"],[3,"VirtAddr"],[3,"PhysPageNum"],[3,"VirtPageNum"],[3,"SimpleRangeIterator"],[3,"SimpleRange"],[8,"StepByOne"],[3,"FRAME_ALLOCATOR"],[8,"FrameAllocator"],[3,"StackFrameAllocator"],[3,"FrameTracker"],[4,"MapType"],[3,"MapPermission"],[3,"KERNEL_SPACE"],[3,"MemorySet"],[3,"MapArea"],[3,"PTEFlags"],[3,"PageTableEntry"],[3,"PageTable"],[3,"UserBuffer"],[3,"UserBufferIterator"],[3,"Condvar"],[3,"CondvarInner"],[3,"MutexSpin"],[3,"MutexBlocking"],[3,"MutexBlockingInner"],[8,"Mutex"],[3,"Semaphore"],[3,"SemaphoreInner"],[3,"UPIntrRefMut"],[3,"INTR_MASKING_INFO"],[3,"UPSafeCellRaw"],[3,"IntrMaskingInfo"],[3,"UPIntrFreeCell"],[3,"INITPROC"],[3,"TaskContext"],[3,"PidHandle"],[3,"KernelStack"],[3,"PID_ALLOCATOR"],[3,"KSTACK_ALLOCATOR"],[3,"RecycleAllocator"],[3,"TaskUserRes"],[3,"TASK_MANAGER"],[3,"PID2PCB"],[3,"TaskManager"],[3,"ProcessControlBlockInner"],[3,"ProcessControlBlock"],[3,"PROCESSOR"],[3,"Processor"],[3,"SignalFlags"],[4,"TaskStatus"],[3,"TaskControlBlock"],[3,"TaskControlBlockInner"],[3,"TIMERS"],[3,"TimerCondVar"],[3,"TrapContext"]]}\ -}'); -if (window.initSearch) {window.initSearch(searchIndex)}; \ No newline at end of file diff --git a/public/main/search.js b/public/main/search.js deleted file mode 100644 index 3aa50607..00000000 --- a/public/main/search.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){var itemTypes=["mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","primitive","associatedtype","constant","associatedconstant","union","foreigntype","keyword","existential","attr","derive","traitalias",];var TY_PRIMITIVE=itemTypes.indexOf("primitive");var TY_KEYWORD=itemTypes.indexOf("keyword");function printTab(nb){if(nb===0||nb===1||nb===2){searchState.currentTab=nb}var nb_copy=nb;onEachLazy(document.getElementById("titles").childNodes,function(elem){if(nb_copy===0){addClass(elem,"selected")}else{removeClass(elem,"selected")}nb_copy-=1});onEachLazy(document.getElementById("results").childNodes,function(elem){if(nb===0){addClass(elem,"active")}else{removeClass(elem,"active")}nb-=1})}function removeEmptyStringsFromArray(x){for(var i=0,len=x.length;i-1){var obj=searchIndex[result.id];obj.lev=result.lev;var res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;if(duplicates[obj.fullPath]){continue}duplicates[obj.fullPath]=true;obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}function sortResults(results,isType){var ar=[];for(var entry in results){if(hasOwnPropertyRustdoc(results,entry)){var result=results[entry];result.word=searchWords[result.id];result.item=searchIndex[result.id]||{};ar.push(result)}}results=ar;if(results.length===0){return[]}results.sort(function(aaa,bbb){var a,b;a=(aaa.word!==val);b=(bbb.word!==val);if(a!==b){return a-b}a=(aaa.lev);b=(bbb.lev);if(a!==b){return a-b}a=(aaa.item.crate!==window.currentCrate);b=(bbb.item.crate!==window.currentCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}if((aaa.item.ty===TY_PRIMITIVE&&bbb.item.ty!==TY_KEYWORD)||(aaa.item.ty===TY_KEYWORD&&bbb.item.ty!==TY_PRIMITIVE)){return-1}if((bbb.item.ty===TY_PRIMITIVE&&aaa.item.ty!==TY_PRIMITIVE)||(bbb.item.ty===TY_KEYWORD&&aaa.item.ty!==TY_KEYWORD)){return 1}a=(aaa.item.desc==="");b=(bbb.item.desc==="");if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});for(var i=0,len=results.length;i"));return{name:val.substring(0,val.indexOf("<")),generics:values.split(/\s*,\s*/),}}return{name:val,generics:[],}}function checkGenerics(obj,val){var tmp_lev,elem_name;if(val.generics.length>0){if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>=val.generics.length){var elems=Object.create(null);var elength=obj[GENERICS_DATA].length;for(var x=0;xGENERICS_DATA&&obj[GENERICS_DATA].length>0){var elems=Object.create(null);len=obj[GENERICS_DATA].length;for(x=0;xGENERICS_DATA&&obj[GENERICS_DATA].length!==0){tmp_lev=checkGenerics(obj,val);if(tmp_lev<=MAX_LEV_DISTANCE){return tmp_lev}}}}else if(literalSearch){var found=false;if((!val.generics||val.generics.length===0)&&obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){found=obj[GENERICS_DATA].some(function(gen){return gen[NAME]===val.name})}return found?0:MAX_LEV_DISTANCE+1}lev_distance=Math.min(levenshtein(obj[NAME],val.name),lev_distance);if(lev_distance<=MAX_LEV_DISTANCE){lev_distance=Math.ceil((checkGenerics(obj,val)+lev_distance)/2)}if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){var olength=obj[GENERICS_DATA].length;for(x=0;x0){var length=obj.type[INPUTS_DATA].length;for(var i=0;iOUTPUT_DATA){var ret=obj.type[OUTPUT_DATA];if(typeof ret[0]==="string"){ret=[ret]}for(var x=0,len=ret.length;xlength){return MAX_LEV_DISTANCE+1}for(var i=0;ilength){break}var lev_total=0;var aborted=false;for(var x=0;xMAX_LEV_DISTANCE){aborted=true;break}lev_total+=lev}if(!aborted){ret_lev=Math.min(ret_lev,Math.round(lev_total/clength))}}return ret_lev}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER)return true;if(filter===type)return true;var name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,}}function handleAliases(ret,query,filterCrates){var aliases=[];var crateAliases=[];if(filterCrates!==undefined){if(ALIASES[filterCrates]&&ALIASES[filterCrates][query.search]){var query_aliases=ALIASES[filterCrates][query.search];var len=query_aliases.length;for(var i=0;iMAX_RESULTS){ret.others.pop()}};onEach(aliases,pushFunc);onEach(crateAliases,pushFunc)}function addIntoResults(isExact,res,fullId,id,index,lev){if(lev===0||(!isExact&&lev<=MAX_LEV_DISTANCE)){if(res[fullId]!==undefined){var result=res[fullId];if(result.dontValidate||result.lev<=lev){return}}res[fullId]={id:id,index:index,dontValidate:isExact,lev:lev,}}}var nSearchWords=searchWords.length;var i,it;var ty;var fullId;var returned;var in_args;var len;if((val.charAt(0)==="\""||val.charAt(0)==="'")&&val.charAt(val.length-1)===val.charAt(0)){val=extractGenerics(val.substr(1,val.length-2));for(i=0;i")>-1){var trimmer=function(s){return s.trim()};var parts=val.split("->").map(trimmer);var input=parts[0];var inputs=input.split(",").map(trimmer).sort();for(i=0,len=inputs.length;i0){firstNonZeroDistance=distance;break}}in_args=firstNonZeroDistance}addIntoResults(true,results_in_args,fullId,i,-1,in_args);addIntoResults(true,results_returned,fullId,i,-1,returned);if(is_module){addIntoResults(true,results,fullId,i,-1,0)}}}query.inputs=inputs.map(function(input){return input.name});query.output=output.name}else{query.inputs=[val];query.output=val;query.search=val;val=val.replace(/_/g,"");var valGenerics=extractGenerics(val);var paths=valLower.split("::");removeEmptyStringsFromArray(paths);val=paths[paths.length-1];var contains=paths.slice(0,paths.length>1?paths.length-1:1);var lev,j;for(j=0;j1){lev=checkPath(contains,paths[paths.length-1],ty);if(lev>MAX_LEV_DISTANCE){continue}else if(lev>0){lev_add=lev/10}}returned=MAX_LEV_DISTANCE+1;in_args=MAX_LEV_DISTANCE+1;var index=-1;lev=MAX_LEV_DISTANCE+1;fullId=ty.id;if(searchWords[j].indexOf(split[i])>-1||searchWords[j].indexOf(val)>-1||ty.normalizedName.indexOf(val)>-1){if(typePassesFilter(typeFilter,ty.ty)&&results[fullId]===undefined){index=ty.normalizedName.indexOf(val)}}if((lev=levenshtein(searchWords[j],val))<=MAX_LEV_DISTANCE){if(typePassesFilter(typeFilter,ty.ty)){lev+=1}else{lev=MAX_LEV_DISTANCE+1}}in_args=findArg(ty,valGenerics,false,typeFilter);returned=checkReturned(ty,valGenerics,false,typeFilter);lev+=lev_add;if(lev>0&&val.length>3&&searchWords[j].indexOf(val)>-1){if(val.length<6){lev-=1}else{lev=0}}addIntoResults(false,results_in_args,fullId,j,index,in_args);addIntoResults(false,results_returned,fullId,j,index,returned);if(typePassesFilter(typeFilter,ty.ty)&&(index!==-1||lev<=MAX_LEV_DISTANCE)){if(index!==-1&&paths.length<2){lev=0}addIntoResults(false,results,fullId,j,index,lev)}}}var ret={"in_args":sortResults(results_in_args,true),"returned":sortResults(results_returned,true),"others":sortResults(results,false),};handleAliases(ret,query,filterCrates);return ret}function validateResult(name,path,keys,parent){for(var i=0,len=keys.length;i-1||path.indexOf(keys[i])>-1||(parent!==undefined&&parent.name!==undefined&&parent.name.toLowerCase().indexOf(keys[i])>-1)||levenshtein(name,keys[i])<=MAX_LEV_DISTANCE)){return false}}return true}function getQuery(raw){var matches,type="",query;query=raw;matches=query.match(/^(fn|mod|struct|enum|trait|type|const|macro)\s*:\s*/i);if(matches){type=matches[1].replace(/^const$/,"constant");query=query.substring(matches[0].length)}return{raw:raw,query:query,type:type,id:query+type}}function nextTab(direction){var next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){var target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#titles > button").item(searchState.currentTab);if(target){target.focus()}}function buildHrefAndPath(item){var displayPath;var href;var type=itemTypes[item.ty];var name=item.name;var path=item.path;if(type==="mod"){displayPath=path+"::";href=window.rootPath+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="primitive"||type==="keyword"){displayPath="";href=window.rootPath+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=window.rootPath+name+"/index.html"}else if(item.parent!==undefined){var myparent=item.parent;var anchor="#"+type+"."+name;var parentType=itemTypes[myparent.ty];var pageType=parentType;var pageName=myparent.name;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){var enumNameIdx=item.path.lastIndexOf("::");var enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="#variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}href=window.rootPath+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html"+anchor}else{displayPath=item.path+"::";href=window.rootPath+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href]}function escape(content){var h1=document.createElement("h1");h1.textContent=content;return h1.innerHTML}function pathSplitter(path){var tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){var extraClass="";if(display===true){extraClass=" active"}var output=document.createElement("div");var length=0;if(array.length>0){output.className="search-results "+extraClass;array.forEach(function(item){var name=item.name;var type=itemTypes[item.ty];length+=1;var extra="";if(type==="primitive"){extra=" (primitive type)"}else if(type==="keyword"){extra=" (keyword)"}var link=document.createElement("a");link.className="result-"+type;link.href=item.href;var wrapper=document.createElement("div");var resultName=document.createElement("div");resultName.className="result-name";if(item.is_alias){var alias=document.createElement("span");alias.className="alias";var bold=document.createElement("b");bold.innerText=item.alias;alias.appendChild(bold);alias.insertAdjacentHTML("beforeend"," - see ");resultName.appendChild(alias)}resultName.insertAdjacentHTML("beforeend",item.displayPath+""+name+extra+"");wrapper.appendChild(resultName);var description=document.createElement("div");description.className="desc";var spanDesc=document.createElement("span");spanDesc.insertAdjacentHTML("beforeend",item.desc);description.appendChild(spanDesc);wrapper.appendChild(description);link.appendChild(wrapper);output.appendChild(link)})}else{output.className="search-failed"+extraClass;output.innerHTML="No results :(
    "+"Try on DuckDuckGo?

    "+"Or try looking in one of these:"}return[output,length]}function makeTabHeader(tabNb,text,nbElems){if(searchState.currentTab===tabNb){return""}return""}function showResults(results,go_to_first,filterCrates){var search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true"&&(!search.firstChild||search.firstChild.innerText!==searchState.loadingText))){var elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}var query=getQuery(searchState.input.value);currentResults=query.id;var ret_others=addTab(results.others,query,true);var ret_in_args=addTab(results.in_args,query,false);var ret_returned=addTab(results.returned,query,false);var currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";if(window.ALL_CRATES.length>1){crates=` in `}var output=`
    -

    Results for ${escape(query.query)} `+(query.type?" (type: "+escape(query.type)+")":"")+"

    "+crates+`
    `+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
    ";var resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;let crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.focusedByTab=[null,null,null];searchState.showResults(search);var elems=document.getElementById("titles").childNodes;elems[0].onclick=function(){printTab(0)};elems[1].onclick=function(){printTab(1)};elems[2].onclick=function(){printTab(2)};printTab(currentTab)}function execSearch(query,searchWords,filterCrates){function getSmallest(arrays,positions,notDuplicates){var start=null;for(var it=0,len=positions.length;itpositions[it]&&(start===null||start>arrays[it][positions[it]].lev)&&!notDuplicates[arrays[it][positions[it]].fullPath]){start=arrays[it][positions[it]].lev}}return start}function mergeArrays(arrays){var ret=[];var positions=[];var notDuplicates={};for(var x=0,arrays_len=arrays.length;xpositions[x]&&arrays[x][positions[x]].lev===smallest&&!notDuplicates[arrays[x][positions[x]].fullPath]){ret.push(arrays[x][positions[x]]);notDuplicates[arrays[x][positions[x]].fullPath]=true;positions[x]+=1}}}return ret}function tokenizeQuery(raw){var i,matched;var l=raw.length;var depth=0;var nextAngle=/(<|>)/g;var ret=[];var start=0;for(i=0;i'){depth+=1}break;case">":if(depth>0){depth-=1}break;case",":if(depth===0){ret.push(raw.substring(start,i));start=i+1}break}}if(start!==i){ret.push(raw.substring(start,i))}return ret}var queries=tokenizeQuery(query.raw);var results={"in_args":[],"returned":[],"others":[],};for(var i=0,len=queries.length;i1){return{"in_args":mergeArrays(results.in_args),"returned":mergeArrays(results.returned),"others":mergeArrays(results.others),}}return{"in_args":results.in_args[0],"returned":results.returned[0],"others":results.others[0],}}function getFilterCrates(){var elem=document.getElementById("crate-search");if(elem&&elem.value!=="All crates"&&hasOwnPropertyRustdoc(rawSearchIndex,elem.value)){return elem.value}return undefined}function search(e,forced){var params=searchState.getQueryStringParams();var query=getQuery(searchState.input.value.trim());if(e){e.preventDefault()}if(query.query.length===0){return}if(!forced&&query.id===currentResults){if(query.query.length>0){searchState.putBackSearch(searchState.input)}return}searchState.title="Results for "+query.query+" - Rust";if(searchState.browserSupportsHistoryApi()){var newURL=getNakedUrl()+"?search="+encodeURIComponent(query.raw)+window.location.hash;if(!history.state&&!params.search){history.pushState(query,"",newURL)}else{history.replaceState(query,"",newURL)}}var filterCrates=getFilterCrates();showResults(execSearch(query,searchWords,filterCrates),params["go_to_first"],filterCrates)}function buildIndex(rawSearchIndex){searchIndex=[];var searchWords=[];var i,word;var currentIndex=0;var id=0;for(var crate in rawSearchIndex){if(!hasOwnPropertyRustdoc(rawSearchIndex,crate)){continue}var crateSize=0;var crateCorpus=rawSearchIndex[crate];searchWords.push(crate);var crateRow={crate:crate,ty:1,name:crate,path:"",desc:crateCorpus.doc,parent:undefined,type:null,id:id,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),};id+=1;searchIndex.push(crateRow);currentIndex+=1;var itemTypes=crateCorpus.t;var itemNames=crateCorpus.n;var itemPaths=crateCorpus.q;var itemDescs=crateCorpus.d;var itemParentIdxs=crateCorpus.i;var itemFunctionSearchTypes=crateCorpus.f;var paths=crateCorpus.p;var aliases=crateCorpus.a;var len=paths.length;for(i=0;i0?paths[itemParentIdxs[i]-1]:undefined,type:itemFunctionSearchTypes[i],id:id,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),};id+=1;searchIndex.push(row);lastPath=row.path;crateSize+=1}if(aliases){ALIASES[crate]={};var j,local_aliases;for(var alias_name in aliases){if(!hasOwnPropertyRustdoc(aliases,alias_name)){continue}if(!hasOwnPropertyRustdoc(ALIASES[crate],alias_name)){ALIASES[crate][alias_name]=[]}local_aliases=aliases[alias_name];for(j=0,len=local_aliases.length;j0){searchState.input.value=params.search;search(e)}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=function(){var qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){updateLocalStorage("rustdoc-saved-filter-crate",ev.target.value);currentResults=null;search(undefined,true)}searchWords=buildIndex(rawSearchIndex);registerSearchEvents();if(searchState.getQueryStringParams().search){search()}};if(window.searchIndex!==undefined){initSearch(window.searchIndex)}})() \ No newline at end of file diff --git a/public/main/settings.css b/public/main/settings.css deleted file mode 100644 index 67098658..00000000 --- a/public/main/settings.css +++ /dev/null @@ -1 +0,0 @@ -.setting-line{padding:5px;position:relative;}.setting-line>div{display:inline-block;vertical-align:top;font-size:17px;padding-top:2px;}.setting-line>.title{font-size:19px;width:100%;max-width:none;border-bottom:1px solid;}.toggle{position:relative;display:inline-block;width:45px;height:27px;margin-right:20px;}.toggle input{opacity:0;position:absolute;}.select-wrapper{float:right;position:relative;height:27px;min-width:25%;}.select-wrapper select{appearance:none;-moz-appearance:none;-webkit-appearance:none;background:none;border:2px solid #ccc;padding-right:28px;width:100%;}.select-wrapper img{pointer-events:none;position:absolute;right:0;bottom:0;background:#ccc;height:100%;width:28px;padding:0px 4px;}.select-wrapper select option{color:initial;}.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.3s;transition:.3s;}.slider:before{position:absolute;content:"";height:19px;width:19px;left:4px;bottom:4px;background-color:white;-webkit-transition:.3s;transition:.3s;}input:checked+.slider{background-color:#2196F3;}input:focus+.slider{box-shadow:0 0 0 2px #0a84ff,0 0 0 6px rgba(10,132,255,0.3);}input:checked+.slider:before{-webkit-transform:translateX(19px);-ms-transform:translateX(19px);transform:translateX(19px);}.setting-line>.sub-settings{padding-left:42px;width:100%;display:block;} \ No newline at end of file diff --git a/public/main/settings.html b/public/main/settings.html deleted file mode 100644 index d801b250..00000000 --- a/public/main/settings.html +++ /dev/null @@ -1,6 +0,0 @@ -Rustdoc settings -

    Rustdoc settings

    Theme preferences
    Use system theme
    Theme
    Preferred dark theme
    Preferred light theme
    -
    Auto-hide item contents for large items.
    Auto-hide item methods' documentation
    Auto-hide trait implementation documentation
    Directly go to item in search if there is only one result
    Show line numbers on code examples
    Disable keyboard shortcuts
    - \ No newline at end of file diff --git a/public/main/settings.js b/public/main/settings.js deleted file mode 100644 index b26bdadc..00000000 --- a/public/main/settings.js +++ /dev/null @@ -1 +0,0 @@ -(function(){function changeSetting(settingName,value){updateLocalStorage("rustdoc-"+settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":case"use-system-theme":updateSystemTheme();updateLightAndDark();break}}function handleKey(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey){return}switch(getVirtualKey(ev)){case"Enter":case"Return":case"Space":ev.target.checked=!ev.target.checked;ev.preventDefault();break}}function showLightAndDark(){addClass(document.getElementById("theme").parentElement.parentElement,"hidden");removeClass(document.getElementById("preferred-light-theme").parentElement.parentElement,"hidden");removeClass(document.getElementById("preferred-dark-theme").parentElement.parentElement,"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme").parentElement.parentElement,"hidden");addClass(document.getElementById("preferred-dark-theme").parentElement.parentElement,"hidden");removeClass(document.getElementById("theme").parentElement.parentElement,"hidden")}function updateLightAndDark(){if(getSettingValue("use-system-theme")!=="false"){showLightAndDark()}else{hideLightAndDark()}}function setEvents(){updateLightAndDark();onEachLazy(document.getElementsByClassName("slider"),function(elem){var toggle=elem.previousElementSibling;var settingId=toggle.id;var settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=function(){changeSetting(this.id,this.checked)};toggle.onkeyup=handleKey;toggle.onkeyrelease=handleKey});onEachLazy(document.getElementsByClassName("select-wrapper"),function(elem){var select=elem.getElementsByTagName("select")[0];var settingId=select.id;var settingValue=getSettingValue(settingId);if(settingValue!==null){select.value=settingValue}select.onchange=function(){changeSetting(this.id,this.value)}})}window.addEventListener("DOMContentLoaded",setEvents)})() \ No newline at end of file diff --git a/public/main/source-files.js b/public/main/source-files.js deleted file mode 100644 index 9beb5574..00000000 --- a/public/main/source-files.js +++ /dev/null @@ -1,3 +0,0 @@ -var N = null;var sourcesIndex = {}; -sourcesIndex["os"] = {"name":"","dirs":[{"name":"boards","files":["qemu.rs"]},{"name":"drivers","dirs":[{"name":"block","files":["mod.rs","sdcard.rs","virtio_blk.rs"]},{"name":"chardev","files":["mod.rs","ns16550a.rs"]}],"files":["mod.rs","plic.rs"]},{"name":"fs","files":["inode.rs","mod.rs","pipe.rs","stdio.rs"]},{"name":"mm","files":["address.rs","frame_allocator.rs","heap_allocator.rs","memory_set.rs","mod.rs","page_table.rs"]},{"name":"sync","files":["condvar.rs","mod.rs","mutex.rs","semaphore.rs","up.rs"]},{"name":"syscall","files":["fs.rs","mod.rs","process.rs","sync.rs","thread.rs"]},{"name":"task","files":["context.rs","id.rs","manager.rs","mod.rs","process.rs","processor.rs","signal.rs","switch.rs","task.rs"]},{"name":"trap","files":["context.rs","mod.rs"]}],"files":["config.rs","console.rs","lang_items.rs","main.rs","sbi.rs","timer.rs"]}; -createSourceSidebar(); diff --git a/public/main/source-script.js b/public/main/source-script.js deleted file mode 100644 index 09515e07..00000000 --- a/public/main/source-script.js +++ /dev/null @@ -1 +0,0 @@ -(function(){function getCurrentFilePath(){var parts=window.location.pathname.split("/");var rootPathParts=window.rootPath.split("/");for(var i=0,len=rootPathParts.length;i"){sidebar.classList.add("expanded");child.innerText="<";updateLocalStorage("rustdoc-source-sidebar-show","true")}else{sidebar.classList.remove("expanded");child.innerText=">";updateLocalStorage("rustdoc-source-sidebar-show","false")}}function createSidebarToggle(){var sidebarToggle=document.createElement("div");sidebarToggle.id="sidebar-toggle";sidebarToggle.onclick=toggleSidebar;var inner=document.createElement("div");if(getCurrentValue("rustdoc-source-sidebar-show")==="true"){inner.innerText="<"}else{inner.innerText=">"}sidebarToggle.appendChild(inner);return sidebarToggle}function createSourceSidebar(){if(!window.rootPath.endsWith("/")){window.rootPath+="/"}var container=document.querySelector("nav.sidebar");var sidebarToggle=createSidebarToggle();container.insertBefore(sidebarToggle,container.firstChild);var sidebar=document.createElement("div");sidebar.id="source-sidebar";if(getCurrentValue("rustdoc-source-sidebar-show")!=="true"){container.classList.remove("expanded")}else{container.classList.add("expanded")}var currentFile=getCurrentFilePath();var hasFoundFile=false;var title=document.createElement("div");title.className="title";title.innerText="Files";sidebar.appendChild(title);Object.keys(sourcesIndex).forEach(function(key){sourcesIndex[key].name=key;hasFoundFile=createDirEntry(sourcesIndex[key],sidebar,"",currentFile,hasFoundFile)});container.insertBefore(sidebar,document.querySelector(".sidebar-logo").nextSibling);var selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}var lineNumbersRegex=/^#?(\d+)(?:-(\d+))?$/;function highlightSourceLines(scrollTo,match){if(typeof match==="undefined"){match=window.location.hash.match(lineNumbersRegex)}if(!match){return}var from=parseInt(match[1],10);var to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(tocur_line_id){var tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",function(){var match=window.location.hash.match(lineNumbersRegex);if(match){return highlightSourceLines(false,match)}});onEachLazy(document.getElementsByClassName("line-numbers"),function(el){el.addEventListener("click",handleSourceHighlight)});highlightSourceLines(true);window.createSourceSidebar=createSourceSidebar})() \ No newline at end of file diff --git a/public/main/src/os/boards/qemu.rs.html b/public/main/src/os/boards/qemu.rs.html deleted file mode 100644 index 888d6ad3..00000000 --- a/public/main/src/os/boards/qemu.rs.html +++ /dev/null @@ -1,96 +0,0 @@ -qemu.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -
    pub const CLOCK_FREQ: usize = 12500000;
    -
    -pub const MMIO: &[(usize, usize)] = &[
    -    (0x1000_0000, 0x1000),
    -    (0x1000_1000, 0x1000),
    -    (0xC00_0000, 0x40_0000),
    -];
    -
    -pub type BlockDeviceImpl = crate::drivers::block::VirtIOBlock;
    -pub type CharDeviceImpl = crate::drivers::chardev::NS16550a<VIRT_UART>;
    -
    -pub const VIRT_PLIC: usize = 0xC00_0000;
    -pub const VIRT_UART: usize = 0x1000_0000;
    -
    -use crate::drivers::block::BLOCK_DEVICE;
    -use crate::drivers::chardev::{CharDevice, UART};
    -use crate::drivers::plic::{IntrTargetPriority, PLIC};
    -
    -pub fn device_init() {
    -    use riscv::register::sie;
    -    let mut plic = unsafe { PLIC::new(VIRT_PLIC) };
    -    let hart_id: usize = 0;
    -    let supervisor = IntrTargetPriority::Supervisor;
    -    let machine = IntrTargetPriority::Machine;
    -    plic.set_threshold(hart_id, supervisor, 0);
    -    plic.set_threshold(hart_id, machine, 1);
    -    for intr_src_id in [1usize, 10] {
    -        plic.enable(hart_id, supervisor, intr_src_id);
    -        plic.set_priority(intr_src_id, 1);
    -    }
    -    unsafe {
    -        sie::set_sext();
    -    }
    -}
    -
    -pub fn irq_handler() {
    -    let mut plic = unsafe { PLIC::new(VIRT_PLIC) };
    -    let intr_src_id = plic.claim(0, IntrTargetPriority::Supervisor);
    -    match intr_src_id {
    -        1 => BLOCK_DEVICE.handle_irq(),
    -        10 => UART.handle_irq(),
    -        _ => panic!("unsupported IRQ {}", intr_src_id),
    -    }
    -    plic.complete(0, IntrTargetPriority::Supervisor, intr_src_id);
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/config.rs.html b/public/main/src/os/config.rs.html deleted file mode 100644 index 7e23b86e..00000000 --- a/public/main/src/os/config.rs.html +++ /dev/null @@ -1,32 +0,0 @@ -config.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -
    #[allow(unused)]
    -
    -pub const USER_STACK_SIZE: usize = 4096 * 2;
    -pub const KERNEL_STACK_SIZE: usize = 4096 * 2;
    -pub const KERNEL_HEAP_SIZE: usize = 0x20_0000;
    -pub const MEMORY_END: usize = 0x80800000;
    -pub const PAGE_SIZE: usize = 0x1000;
    -pub const PAGE_SIZE_BITS: usize = 0xc;
    -
    -pub const TRAMPOLINE: usize = usize::MAX - PAGE_SIZE + 1;
    -pub const TRAP_CONTEXT_BASE: usize = TRAMPOLINE - PAGE_SIZE;
    -
    -pub use crate::board::{CLOCK_FREQ, MMIO};
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/console.rs.html b/public/main/src/os/console.rs.html deleted file mode 100644 index bc7071ea..00000000 --- a/public/main/src/os/console.rs.html +++ /dev/null @@ -1,68 +0,0 @@ -console.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -
    use crate::drivers::chardev::{CharDevice, UART};
    -use core::fmt::{self, Write};
    -
    -struct Stdout;
    -
    -impl Write for Stdout {
    -    fn write_str(&mut self, s: &str) -> fmt::Result {
    -        for c in s.chars() {
    -            UART.write(c as u8);
    -        }
    -        Ok(())
    -    }
    -}
    -
    -pub fn print(args: fmt::Arguments) {
    -    Stdout.write_fmt(args).unwrap();
    -}
    -
    -#[macro_export]
    -macro_rules! print {
    -    ($fmt: literal $(, $($arg: tt)+)?) => {
    -        $crate::console::print(format_args!($fmt $(, $($arg)+)?))
    -    }
    -}
    -
    -#[macro_export]
    -macro_rules! println {
    -    ($fmt: literal $(, $($arg: tt)+)?) => {
    -        $crate::console::print(format_args!(concat!($fmt, "\n") $(, $($arg)+)?))
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/drivers/block/mod.rs.html b/public/main/src/os/drivers/block/mod.rs.html deleted file mode 100644 index c5f88db4..00000000 --- a/public/main/src/os/drivers/block/mod.rs.html +++ /dev/null @@ -1,66 +0,0 @@ -mod.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -
    mod sdcard;
    -mod virtio_blk;
    -
    -pub use sdcard::SDCardWrapper;
    -pub use virtio_blk::VirtIOBlock;
    -
    -use crate::board::BlockDeviceImpl;
    -use alloc::sync::Arc;
    -use easy_fs::BlockDevice;
    -use lazy_static::*;
    -
    -lazy_static! {
    -    pub static ref BLOCK_DEVICE: Arc<dyn BlockDevice> = Arc::new(BlockDeviceImpl::new());
    -}
    -
    -#[allow(unused)]
    -pub fn block_device_test() {
    -    let block_device = BLOCK_DEVICE.clone();
    -    let mut write_buffer = [0u8; 512];
    -    let mut read_buffer = [0u8; 512];
    -    for i in 0..512 {
    -        for byte in write_buffer.iter_mut() {
    -            *byte = i as u8;
    -        }
    -        block_device.write_block(i as usize, &write_buffer);
    -        block_device.read_block(i as usize, &mut read_buffer);
    -        assert_eq!(write_buffer, read_buffer);
    -    }
    -    println!("block device test passed!");
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/drivers/block/sdcard.rs.html b/public/main/src/os/drivers/block/sdcard.rs.html deleted file mode 100644 index 17e426e1..00000000 --- a/public/main/src/os/drivers/block/sdcard.rs.html +++ /dev/null @@ -1,1540 +0,0 @@ -sdcard.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -129
    -130
    -131
    -132
    -133
    -134
    -135
    -136
    -137
    -138
    -139
    -140
    -141
    -142
    -143
    -144
    -145
    -146
    -147
    -148
    -149
    -150
    -151
    -152
    -153
    -154
    -155
    -156
    -157
    -158
    -159
    -160
    -161
    -162
    -163
    -164
    -165
    -166
    -167
    -168
    -169
    -170
    -171
    -172
    -173
    -174
    -175
    -176
    -177
    -178
    -179
    -180
    -181
    -182
    -183
    -184
    -185
    -186
    -187
    -188
    -189
    -190
    -191
    -192
    -193
    -194
    -195
    -196
    -197
    -198
    -199
    -200
    -201
    -202
    -203
    -204
    -205
    -206
    -207
    -208
    -209
    -210
    -211
    -212
    -213
    -214
    -215
    -216
    -217
    -218
    -219
    -220
    -221
    -222
    -223
    -224
    -225
    -226
    -227
    -228
    -229
    -230
    -231
    -232
    -233
    -234
    -235
    -236
    -237
    -238
    -239
    -240
    -241
    -242
    -243
    -244
    -245
    -246
    -247
    -248
    -249
    -250
    -251
    -252
    -253
    -254
    -255
    -256
    -257
    -258
    -259
    -260
    -261
    -262
    -263
    -264
    -265
    -266
    -267
    -268
    -269
    -270
    -271
    -272
    -273
    -274
    -275
    -276
    -277
    -278
    -279
    -280
    -281
    -282
    -283
    -284
    -285
    -286
    -287
    -288
    -289
    -290
    -291
    -292
    -293
    -294
    -295
    -296
    -297
    -298
    -299
    -300
    -301
    -302
    -303
    -304
    -305
    -306
    -307
    -308
    -309
    -310
    -311
    -312
    -313
    -314
    -315
    -316
    -317
    -318
    -319
    -320
    -321
    -322
    -323
    -324
    -325
    -326
    -327
    -328
    -329
    -330
    -331
    -332
    -333
    -334
    -335
    -336
    -337
    -338
    -339
    -340
    -341
    -342
    -343
    -344
    -345
    -346
    -347
    -348
    -349
    -350
    -351
    -352
    -353
    -354
    -355
    -356
    -357
    -358
    -359
    -360
    -361
    -362
    -363
    -364
    -365
    -366
    -367
    -368
    -369
    -370
    -371
    -372
    -373
    -374
    -375
    -376
    -377
    -378
    -379
    -380
    -381
    -382
    -383
    -384
    -385
    -386
    -387
    -388
    -389
    -390
    -391
    -392
    -393
    -394
    -395
    -396
    -397
    -398
    -399
    -400
    -401
    -402
    -403
    -404
    -405
    -406
    -407
    -408
    -409
    -410
    -411
    -412
    -413
    -414
    -415
    -416
    -417
    -418
    -419
    -420
    -421
    -422
    -423
    -424
    -425
    -426
    -427
    -428
    -429
    -430
    -431
    -432
    -433
    -434
    -435
    -436
    -437
    -438
    -439
    -440
    -441
    -442
    -443
    -444
    -445
    -446
    -447
    -448
    -449
    -450
    -451
    -452
    -453
    -454
    -455
    -456
    -457
    -458
    -459
    -460
    -461
    -462
    -463
    -464
    -465
    -466
    -467
    -468
    -469
    -470
    -471
    -472
    -473
    -474
    -475
    -476
    -477
    -478
    -479
    -480
    -481
    -482
    -483
    -484
    -485
    -486
    -487
    -488
    -489
    -490
    -491
    -492
    -493
    -494
    -495
    -496
    -497
    -498
    -499
    -500
    -501
    -502
    -503
    -504
    -505
    -506
    -507
    -508
    -509
    -510
    -511
    -512
    -513
    -514
    -515
    -516
    -517
    -518
    -519
    -520
    -521
    -522
    -523
    -524
    -525
    -526
    -527
    -528
    -529
    -530
    -531
    -532
    -533
    -534
    -535
    -536
    -537
    -538
    -539
    -540
    -541
    -542
    -543
    -544
    -545
    -546
    -547
    -548
    -549
    -550
    -551
    -552
    -553
    -554
    -555
    -556
    -557
    -558
    -559
    -560
    -561
    -562
    -563
    -564
    -565
    -566
    -567
    -568
    -569
    -570
    -571
    -572
    -573
    -574
    -575
    -576
    -577
    -578
    -579
    -580
    -581
    -582
    -583
    -584
    -585
    -586
    -587
    -588
    -589
    -590
    -591
    -592
    -593
    -594
    -595
    -596
    -597
    -598
    -599
    -600
    -601
    -602
    -603
    -604
    -605
    -606
    -607
    -608
    -609
    -610
    -611
    -612
    -613
    -614
    -615
    -616
    -617
    -618
    -619
    -620
    -621
    -622
    -623
    -624
    -625
    -626
    -627
    -628
    -629
    -630
    -631
    -632
    -633
    -634
    -635
    -636
    -637
    -638
    -639
    -640
    -641
    -642
    -643
    -644
    -645
    -646
    -647
    -648
    -649
    -650
    -651
    -652
    -653
    -654
    -655
    -656
    -657
    -658
    -659
    -660
    -661
    -662
    -663
    -664
    -665
    -666
    -667
    -668
    -669
    -670
    -671
    -672
    -673
    -674
    -675
    -676
    -677
    -678
    -679
    -680
    -681
    -682
    -683
    -684
    -685
    -686
    -687
    -688
    -689
    -690
    -691
    -692
    -693
    -694
    -695
    -696
    -697
    -698
    -699
    -700
    -701
    -702
    -703
    -704
    -705
    -706
    -707
    -708
    -709
    -710
    -711
    -712
    -713
    -714
    -715
    -716
    -717
    -718
    -719
    -720
    -721
    -722
    -723
    -724
    -725
    -726
    -727
    -728
    -729
    -730
    -731
    -732
    -733
    -734
    -735
    -736
    -737
    -738
    -739
    -740
    -741
    -742
    -743
    -744
    -745
    -746
    -747
    -748
    -749
    -750
    -751
    -752
    -753
    -754
    -755
    -756
    -757
    -758
    -759
    -760
    -761
    -762
    -763
    -764
    -765
    -766
    -767
    -
    #![allow(non_snake_case)]
    -#![allow(non_camel_case_types)]
    -#![allow(unused)]
    -
    -use super::BlockDevice;
    -use crate::sync::UPIntrFreeCell;
    -use core::convert::TryInto;
    -use k210_hal::prelude::*;
    -use k210_pac::{Peripherals, SPI0};
    -use k210_soc::{
    -    fpioa::{self, io},
    -    //dmac::{dma_channel, DMAC, DMACExt},
    -    gpio,
    -    gpiohs,
    -    sleep::usleep,
    -    spi::{aitm, frame_format, tmod, work_mode, SPIExt, SPIImpl, SPI},
    -    sysctl,
    -};
    -use lazy_static::*;
    -
    -pub struct SDCard<SPI> {
    -    spi: SPI,
    -    spi_cs: u32,
    -    cs_gpionum: u8,
    -    //dmac: &'a DMAC,
    -    //channel: dma_channel,
    -}
    -
    -/*
    - * Start Data tokens:
    - *         Tokens (necessary because at nop/idle (and CS active) only 0xff is
    - *         on the data/command line)
    - */
    -/** Data token start byte, Start Single Block Read */
    -pub const SD_START_DATA_SINGLE_BLOCK_READ: u8 = 0xFE;
    -/** Data token start byte, Start Multiple Block Read */
    -pub const SD_START_DATA_MULTIPLE_BLOCK_READ: u8 = 0xFE;
    -/** Data token start byte, Start Single Block Write */
    -pub const SD_START_DATA_SINGLE_BLOCK_WRITE: u8 = 0xFE;
    -/** Data token start byte, Start Multiple Block Write */
    -pub const SD_START_DATA_MULTIPLE_BLOCK_WRITE: u8 = 0xFC;
    -
    -pub const SEC_LEN: usize = 512;
    -
    -/** SD commands */
    -#[repr(u8)]
    -#[derive(Debug, PartialEq, Eq, Copy, Clone)]
    -#[allow(unused)]
    -pub enum CMD {
    -    /** Software reset */
    -    CMD0 = 0,
    -    /** Check voltage range (SDC V2) */
    -    CMD8 = 8,
    -    /** Read CSD register */
    -    CMD9 = 9,
    -    /** Read CID register */
    -    CMD10 = 10,
    -    /** Stop to read data */
    -    CMD12 = 12,
    -    /** Change R/W block size */
    -    CMD16 = 16,
    -    /** Read block */
    -    CMD17 = 17,
    -    /** Read multiple blocks */
    -    CMD18 = 18,
    -    /** Number of blocks to erase (SDC) */
    -    ACMD23 = 23,
    -    /** Write a block */
    -    CMD24 = 24,
    -    /** Write multiple blocks */
    -    CMD25 = 25,
    -    /** Initiate initialization process (SDC) */
    -    ACMD41 = 41,
    -    /** Leading command for ACMD* */
    -    CMD55 = 55,
    -    /** Read OCR */
    -    CMD58 = 58,
    -    /** Enable/disable CRC check */
    -    CMD59 = 59,
    -}
    -
    -#[allow(unused)]
    -#[derive(Debug, Copy, Clone)]
    -pub enum InitError {
    -    CMDFailed(CMD, u8),
    -    CardCapacityStatusNotSet([u8; 4]),
    -    CannotGetCardInfo,
    -}
    -
    -/**
    - * Card Specific Data: CSD Register
    - */
    -#[derive(Debug, Copy, Clone)]
    -pub struct SDCardCSD {
    -    pub CSDStruct: u8,        /* CSD structure */
    -    pub SysSpecVersion: u8,   /* System specification version */
    -    pub Reserved1: u8,        /* Reserved */
    -    pub TAAC: u8,             /* Data read access-time 1 */
    -    pub NSAC: u8,             /* Data read access-time 2 in CLK cycles */
    -    pub MaxBusClkFrec: u8,    /* Max. bus clock frequency */
    -    pub CardComdClasses: u16, /* Card command classes */
    -    pub RdBlockLen: u8,       /* Max. read data block length */
    -    pub PartBlockRead: u8,    /* Partial blocks for read allowed */
    -    pub WrBlockMisalign: u8,  /* Write block misalignment */
    -    pub RdBlockMisalign: u8,  /* Read block misalignment */
    -    pub DSRImpl: u8,          /* DSR implemented */
    -    pub Reserved2: u8,        /* Reserved */
    -    pub DeviceSize: u32,      /* Device Size */
    -    //MaxRdCurrentVDDMin: u8,   /* Max. read current @ VDD min */
    -    //MaxRdCurrentVDDMax: u8,   /* Max. read current @ VDD max */
    -    //MaxWrCurrentVDDMin: u8,   /* Max. write current @ VDD min */
    -    //MaxWrCurrentVDDMax: u8,   /* Max. write current @ VDD max */
    -    //DeviceSizeMul: u8,        /* Device size multiplier */
    -    pub EraseGrSize: u8,         /* Erase group size */
    -    pub EraseGrMul: u8,          /* Erase group size multiplier */
    -    pub WrProtectGrSize: u8,     /* Write protect group size */
    -    pub WrProtectGrEnable: u8,   /* Write protect group enable */
    -    pub ManDeflECC: u8,          /* Manufacturer default ECC */
    -    pub WrSpeedFact: u8,         /* Write speed factor */
    -    pub MaxWrBlockLen: u8,       /* Max. write data block length */
    -    pub WriteBlockPaPartial: u8, /* Partial blocks for write allowed */
    -    pub Reserved3: u8,           /* Reserded */
    -    pub ContentProtectAppli: u8, /* Content protection application */
    -    pub FileFormatGroup: u8,     /* File format group */
    -    pub CopyFlag: u8,            /* Copy flag (OTP) */
    -    pub PermWrProtect: u8,       /* Permanent write protection */
    -    pub TempWrProtect: u8,       /* Temporary write protection */
    -    pub FileFormat: u8,          /* File Format */
    -    pub ECC: u8,                 /* ECC code */
    -    pub CSD_CRC: u8,             /* CSD CRC */
    -    pub Reserved4: u8,           /* always 1*/
    -}
    -
    -/**
    - * Card Identification Data: CID Register
    - */
    -#[derive(Debug, Copy, Clone)]
    -pub struct SDCardCID {
    -    pub ManufacturerID: u8, /* ManufacturerID */
    -    pub OEM_AppliID: u16,   /* OEM/Application ID */
    -    pub ProdName1: u32,     /* Product Name part1 */
    -    pub ProdName2: u8,      /* Product Name part2*/
    -    pub ProdRev: u8,        /* Product Revision */
    -    pub ProdSN: u32,        /* Product Serial Number */
    -    pub Reserved1: u8,      /* Reserved1 */
    -    pub ManufactDate: u16,  /* Manufacturing Date */
    -    pub CID_CRC: u8,        /* CID CRC */
    -    pub Reserved2: u8,      /* always 1 */
    -}
    -
    -/**
    - * Card information
    - */
    -#[derive(Debug, Copy, Clone)]
    -pub struct SDCardInfo {
    -    pub SD_csd: SDCardCSD,
    -    pub SD_cid: SDCardCID,
    -    pub CardCapacity: u64,  /* Card Capacity */
    -    pub CardBlockSize: u64, /* Card Block Size */
    -}
    -
    -impl</*'a,*/ X: SPI> SDCard</*'a,*/ X> {
    -    pub fn new(
    -        spi: X,
    -        spi_cs: u32,
    -        cs_gpionum: u8, /*, dmac: &'a DMAC, channel: dma_channel*/
    -    ) -> Self {
    -        Self {
    -            spi,
    -            spi_cs,
    -            cs_gpionum,
    -            /*
    -            dmac,
    -            channel,
    -             */
    -        }
    -    }
    -
    -    fn CS_HIGH(&self) {
    -        gpiohs::set_pin(self.cs_gpionum, true);
    -    }
    -
    -    fn CS_LOW(&self) {
    -        gpiohs::set_pin(self.cs_gpionum, false);
    -    }
    -
    -    fn HIGH_SPEED_ENABLE(&self) {
    -        self.spi.set_clk_rate(10000000);
    -    }
    -
    -    fn lowlevel_init(&self) {
    -        gpiohs::set_direction(self.cs_gpionum, gpio::direction::OUTPUT);
    -        self.spi.set_clk_rate(200000);
    -    }
    -
    -    fn write_data(&self, data: &[u8]) {
    -        self.spi.configure(
    -            work_mode::MODE0,
    -            frame_format::STANDARD,
    -            8, /* data bits */
    -            0, /* endian */
    -            0, /*instruction length*/
    -            0, /*address length*/
    -            0, /*wait cycles*/
    -            aitm::STANDARD,
    -            tmod::TRANS,
    -        );
    -        self.spi.send_data(self.spi_cs, data);
    -    }
    -
    -    /*
    -    fn write_data_dma(&self, data: &[u32]) {
    -        self.spi.configure(
    -            work_mode::MODE0,
    -            frame_format::STANDARD,
    -            8, /* data bits */
    -            0, /* endian */
    -            0, /*instruction length*/
    -            0, /*address length*/
    -            0, /*wait cycles*/
    -            aitm::STANDARD,
    -            tmod::TRANS,
    -        );
    -        self.spi
    -            .send_data_dma(self.dmac, self.channel, self.spi_cs, data);
    -    }
    -     */
    -
    -    fn read_data(&self, data: &mut [u8]) {
    -        self.spi.configure(
    -            work_mode::MODE0,
    -            frame_format::STANDARD,
    -            8, /* data bits */
    -            0, /* endian */
    -            0, /*instruction length*/
    -            0, /*address length*/
    -            0, /*wait cycles*/
    -            aitm::STANDARD,
    -            tmod::RECV,
    -        );
    -        self.spi.recv_data(self.spi_cs, data);
    -    }
    -
    -    /*
    -    fn read_data_dma(&self, data: &mut [u32]) {
    -        self.spi.configure(
    -            work_mode::MODE0,
    -            frame_format::STANDARD,
    -            8, /* data bits */
    -            0, /* endian */
    -            0, /*instruction length*/
    -            0, /*address length*/
    -            0, /*wait cycles*/
    -            aitm::STANDARD,
    -            tmod::RECV,
    -        );
    -        self.spi
    -            .recv_data_dma(self.dmac, self.channel, self.spi_cs, data);
    -    }
    -     */
    -
    -    /*
    -     * Send 5 bytes command to the SD card.
    -     * @param  cmd: The user expected command to send to SD card.
    -     * @param  arg: The command argument.
    -     * @param  crc: The CRC.
    -     * @retval None
    -     */
    -    fn send_cmd(&self, cmd: CMD, arg: u32, crc: u8) {
    -        /* SD chip select low */
    -        self.CS_LOW();
    -        /* Send the Cmd bytes */
    -        self.write_data(&[
    -            /* Construct byte 1 */
    -            ((cmd as u8) | 0x40),
    -            /* Construct byte 2 */
    -            (arg >> 24) as u8,
    -            /* Construct byte 3 */
    -            ((arg >> 16) & 0xff) as u8,
    -            /* Construct byte 4 */
    -            ((arg >> 8) & 0xff) as u8,
    -            /* Construct byte 5 */
    -            (arg & 0xff) as u8,
    -            /* Construct CRC: byte 6 */
    -            crc,
    -        ]);
    -    }
    -
    -    /* Send end-command sequence to SD card */
    -    fn end_cmd(&self) {
    -        /* SD chip select high */
    -        self.CS_HIGH();
    -        /* Send the cmd byte */
    -        self.write_data(&[0xff]);
    -    }
    -
    -    /*
    -     * Returns the SD response.
    -     * @param  None
    -     * @retval The SD Response:
    -     *         - 0xFF: Sequence failed
    -     *         - 0: Sequence succeed
    -     */
    -    fn get_response(&self) -> u8 {
    -        let result = &mut [0u8];
    -        let mut timeout = 0x0FFF;
    -        /* Check if response is got or a timeout is happen */
    -        while timeout != 0 {
    -            self.read_data(result);
    -            /* Right response got */
    -            if result[0] != 0xFF {
    -                return result[0];
    -            }
    -            timeout -= 1;
    -        }
    -        /* After time out */
    -        0xFF
    -    }
    -
    -    /*
    -     * Get SD card data response.
    -     * @param  None
    -     * @retval The SD status: Read data response xxx0<status>1
    -     *         - status 010: Data accepted
    -     *         - status 101: Data rejected due to a crc error
    -     *         - status 110: Data rejected due to a Write error.
    -     *         - status 111: Data rejected due to other error.
    -     */
    -    fn get_dataresponse(&self) -> u8 {
    -        let response = &mut [0u8];
    -        /* Read response */
    -        self.read_data(response);
    -        /* Mask unused bits */
    -        response[0] &= 0x1F;
    -        if response[0] != 0x05 {
    -            return 0xFF;
    -        }
    -        /* Wait null data */
    -        self.read_data(response);
    -        while response[0] == 0 {
    -            self.read_data(response);
    -        }
    -        /* Return response */
    -        0
    -    }
    -
    -    /*
    -     * Read the CSD card register
    -     *         Reading the contents of the CSD register in SPI mode is a simple
    -     *         read-block transaction.
    -     * @param  SD_csd: pointer on an SCD register structure
    -     * @retval The SD Response:
    -     *         - `Err()`: Sequence failed
    -     *         - `Ok(info)`: Sequence succeed
    -     */
    -    fn get_csdregister(&self) -> Result<SDCardCSD, ()> {
    -        let mut csd_tab = [0u8; 18];
    -        /* Send CMD9 (CSD register) */
    -        self.send_cmd(CMD::CMD9, 0, 0);
    -        /* Wait for response in the R1 format (0x00 is no errors) */
    -        if self.get_response() != 0x00 {
    -            self.end_cmd();
    -            return Err(());
    -        }
    -        if self.get_response() != SD_START_DATA_SINGLE_BLOCK_READ {
    -            self.end_cmd();
    -            return Err(());
    -        }
    -        /* Store CSD register value on csd_tab */
    -        /* Get CRC bytes (not really needed by us, but required by SD) */
    -        self.read_data(&mut csd_tab);
    -        self.end_cmd();
    -        /* see also: https://cdn-shop.adafruit.com/datasheets/TS16GUSDHC6.pdf */
    -        Ok(SDCardCSD {
    -            /* Byte 0 */
    -            CSDStruct: (csd_tab[0] & 0xC0) >> 6,
    -            SysSpecVersion: (csd_tab[0] & 0x3C) >> 2,
    -            Reserved1: csd_tab[0] & 0x03,
    -            /* Byte 1 */
    -            TAAC: csd_tab[1],
    -            /* Byte 2 */
    -            NSAC: csd_tab[2],
    -            /* Byte 3 */
    -            MaxBusClkFrec: csd_tab[3],
    -            /* Byte 4, 5 */
    -            CardComdClasses: (u16::from(csd_tab[4]) << 4) | ((u16::from(csd_tab[5]) & 0xF0) >> 4),
    -            /* Byte 5 */
    -            RdBlockLen: csd_tab[5] & 0x0F,
    -            /* Byte 6 */
    -            PartBlockRead: (csd_tab[6] & 0x80) >> 7,
    -            WrBlockMisalign: (csd_tab[6] & 0x40) >> 6,
    -            RdBlockMisalign: (csd_tab[6] & 0x20) >> 5,
    -            DSRImpl: (csd_tab[6] & 0x10) >> 4,
    -            Reserved2: 0,
    -            // DeviceSize: (csd_tab[6] & 0x03) << 10,
    -            /* Byte 7, 8, 9 */
    -            DeviceSize: ((u32::from(csd_tab[7]) & 0x3F) << 16)
    -                | (u32::from(csd_tab[8]) << 8)
    -                | u32::from(csd_tab[9]),
    -            /* Byte 10 */
    -            EraseGrSize: (csd_tab[10] & 0x40) >> 6,
    -            /* Byte 10, 11 */
    -            EraseGrMul: ((csd_tab[10] & 0x3F) << 1) | ((csd_tab[11] & 0x80) >> 7),
    -            /* Byte 11 */
    -            WrProtectGrSize: (csd_tab[11] & 0x7F),
    -            /* Byte 12 */
    -            WrProtectGrEnable: (csd_tab[12] & 0x80) >> 7,
    -            ManDeflECC: (csd_tab[12] & 0x60) >> 5,
    -            WrSpeedFact: (csd_tab[12] & 0x1C) >> 2,
    -            /* Byte 12,13 */
    -            MaxWrBlockLen: ((csd_tab[12] & 0x03) << 2) | ((csd_tab[13] & 0xC0) >> 6),
    -            /* Byte 13 */
    -            WriteBlockPaPartial: (csd_tab[13] & 0x20) >> 5,
    -            Reserved3: 0,
    -            ContentProtectAppli: (csd_tab[13] & 0x01),
    -            /* Byte 14 */
    -            FileFormatGroup: (csd_tab[14] & 0x80) >> 7,
    -            CopyFlag: (csd_tab[14] & 0x40) >> 6,
    -            PermWrProtect: (csd_tab[14] & 0x20) >> 5,
    -            TempWrProtect: (csd_tab[14] & 0x10) >> 4,
    -            FileFormat: (csd_tab[14] & 0x0C) >> 2,
    -            ECC: (csd_tab[14] & 0x03),
    -            /* Byte 15 */
    -            CSD_CRC: (csd_tab[15] & 0xFE) >> 1,
    -            Reserved4: 1,
    -            /* Return the reponse */
    -        })
    -    }
    -
    -    /*
    -     * Read the CID card register.
    -     *         Reading the contents of the CID register in SPI mode is a simple
    -     *         read-block transaction.
    -     * @param  SD_cid: pointer on an CID register structure
    -     * @retval The SD Response:
    -     *         - `Err()`: Sequence failed
    -     *         - `Ok(info)`: Sequence succeed
    -     */
    -    fn get_cidregister(&self) -> Result<SDCardCID, ()> {
    -        let mut cid_tab = [0u8; 18];
    -        /* Send CMD10 (CID register) */
    -        self.send_cmd(CMD::CMD10, 0, 0);
    -        /* Wait for response in the R1 format (0x00 is no errors) */
    -        if self.get_response() != 0x00 {
    -            self.end_cmd();
    -            return Err(());
    -        }
    -        if self.get_response() != SD_START_DATA_SINGLE_BLOCK_READ {
    -            self.end_cmd();
    -            return Err(());
    -        }
    -        /* Store CID register value on cid_tab */
    -        /* Get CRC bytes (not really needed by us, but required by SD) */
    -        self.read_data(&mut cid_tab);
    -        self.end_cmd();
    -        Ok(SDCardCID {
    -            /* Byte 0 */
    -            ManufacturerID: cid_tab[0],
    -            /* Byte 1, 2 */
    -            OEM_AppliID: (u16::from(cid_tab[1]) << 8) | u16::from(cid_tab[2]),
    -            /* Byte 3, 4, 5, 6 */
    -            ProdName1: (u32::from(cid_tab[3]) << 24)
    -                | (u32::from(cid_tab[4]) << 16)
    -                | (u32::from(cid_tab[5]) << 8)
    -                | u32::from(cid_tab[6]),
    -            /* Byte 7 */
    -            ProdName2: cid_tab[7],
    -            /* Byte 8 */
    -            ProdRev: cid_tab[8],
    -            /* Byte 9, 10, 11, 12 */
    -            ProdSN: (u32::from(cid_tab[9]) << 24)
    -                | (u32::from(cid_tab[10]) << 16)
    -                | (u32::from(cid_tab[11]) << 8)
    -                | u32::from(cid_tab[12]),
    -            /* Byte 13, 14 */
    -            Reserved1: (cid_tab[13] & 0xF0) >> 4,
    -            ManufactDate: ((u16::from(cid_tab[13]) & 0x0F) << 8) | u16::from(cid_tab[14]),
    -            /* Byte 15 */
    -            CID_CRC: (cid_tab[15] & 0xFE) >> 1,
    -            Reserved2: 1,
    -        })
    -    }
    -
    -    /*
    -     * Returns information about specific card.
    -     * @param  cardinfo: pointer to a SD_CardInfo structure that contains all SD
    -     *         card information.
    -     * @retval The SD Response:
    -     *         - `Err(())`: Sequence failed
    -     *         - `Ok(info)`: Sequence succeed
    -     */
    -    fn get_cardinfo(&self) -> Result<SDCardInfo, ()> {
    -        let mut info = SDCardInfo {
    -            SD_csd: self.get_csdregister()?,
    -            SD_cid: self.get_cidregister()?,
    -            CardCapacity: 0,
    -            CardBlockSize: 0,
    -        };
    -        info.CardBlockSize = 1 << u64::from(info.SD_csd.RdBlockLen);
    -        info.CardCapacity = (u64::from(info.SD_csd.DeviceSize) + 1) * 1024 * info.CardBlockSize;
    -
    -        Ok(info)
    -    }
    -
    -    /*
    -     * Initializes the SD/SD communication in SPI mode.
    -     * @param  None
    -     * @retval The SD Response info if succeeeded, otherwise Err
    -     */
    -    pub fn init(&self) -> Result<SDCardInfo, InitError> {
    -        /* Initialize SD_SPI */
    -        self.lowlevel_init();
    -        /* SD chip select high */
    -        self.CS_HIGH();
    -        /* NOTE: this reset doesn't always seem to work if the SD access was broken off in the
    -         * middle of an operation: CMDFailed(CMD0, 127). */
    -
    -        /* Send dummy byte 0xFF, 10 times with CS high */
    -        /* Rise CS and MOSI for 80 clocks cycles */
    -        /* Send dummy byte 0xFF */
    -        self.write_data(&[0xff; 10]);
    -        /*------------Put SD in SPI mode--------------*/
    -        /* SD initialized and set to SPI mode properly */
    -
    -        /* Send software reset */
    -        self.send_cmd(CMD::CMD0, 0, 0x95);
    -        let result = self.get_response();
    -        self.end_cmd();
    -        if result != 0x01 {
    -            return Err(InitError::CMDFailed(CMD::CMD0, result));
    -        }
    -
    -        /* Check voltage range */
    -        self.send_cmd(CMD::CMD8, 0x01AA, 0x87);
    -        /* 0x01 or 0x05 */
    -        let result = self.get_response();
    -        let mut frame = [0u8; 4];
    -        self.read_data(&mut frame);
    -        self.end_cmd();
    -        if result != 0x01 {
    -            return Err(InitError::CMDFailed(CMD::CMD8, result));
    -        }
    -        let mut index = 255;
    -        while index != 0 {
    -            /* <ACMD> */
    -            self.send_cmd(CMD::CMD55, 0, 0);
    -            let result = self.get_response();
    -            self.end_cmd();
    -            if result != 0x01 {
    -                return Err(InitError::CMDFailed(CMD::CMD55, result));
    -            }
    -            /* Initiate SDC initialization process */
    -            self.send_cmd(CMD::ACMD41, 0x40000000, 0);
    -            let result = self.get_response();
    -            self.end_cmd();
    -            if result == 0x00 {
    -                break;
    -            }
    -            index -= 1;
    -        }
    -        if index == 0 {
    -            return Err(InitError::CMDFailed(CMD::ACMD41, result));
    -        }
    -        index = 255;
    -        let mut frame = [0u8; 4];
    -        while index != 0 {
    -            /* Read OCR */
    -            self.send_cmd(CMD::CMD58, 0, 1);
    -            let result = self.get_response();
    -            self.read_data(&mut frame);
    -            self.end_cmd();
    -            if result == 0 {
    -                break;
    -            }
    -            index -= 1;
    -        }
    -        if index == 0 {
    -            return Err(InitError::CMDFailed(CMD::CMD58, result));
    -        }
    -        if (frame[0] & 0x40) == 0 {
    -            return Err(InitError::CardCapacityStatusNotSet(frame));
    -        }
    -        self.HIGH_SPEED_ENABLE();
    -        self.get_cardinfo()
    -            .map_err(|_| InitError::CannotGetCardInfo)
    -    }
    -
    -    /*
    -     * Reads a block of data from the SD.
    -     * @param  data_buf: slice that receives the data read from the SD.
    -     * @param  sector: SD's internal address to read from.
    -     * @retval The SD Response:
    -     *         - `Err(())`: Sequence failed
    -     *         - `Ok(())`: Sequence succeed
    -     */
    -    pub fn read_sector(&self, data_buf: &mut [u8], sector: u32) -> Result<(), ()> {
    -        assert!(data_buf.len() >= SEC_LEN && (data_buf.len() % SEC_LEN) == 0);
    -        /* Send CMD17 to read one block, or CMD18 for multiple */
    -        let flag = if data_buf.len() == SEC_LEN {
    -            self.send_cmd(CMD::CMD17, sector, 0);
    -            false
    -        } else {
    -            self.send_cmd(CMD::CMD18, sector, 0);
    -            true
    -        };
    -        /* Check if the SD acknowledged the read block command: R1 response (0x00: no errors) */
    -        if self.get_response() != 0x00 {
    -            self.end_cmd();
    -            return Err(());
    -        }
    -        let mut error = false;
    -        //let mut dma_chunk = [0u32; SEC_LEN];
    -        let mut tmp_chunk = [0u8; SEC_LEN];
    -        for chunk in data_buf.chunks_mut(SEC_LEN) {
    -            if self.get_response() != SD_START_DATA_SINGLE_BLOCK_READ {
    -                error = true;
    -                break;
    -            }
    -            /* Read the SD block data : read NumByteToRead data */
    -            //self.read_data_dma(&mut dma_chunk);
    -            self.read_data(&mut tmp_chunk);
    -            /* Place the data received as u32 units from DMA into the u8 target buffer */
    -            for (a, b) in chunk.iter_mut().zip(/*dma_chunk*/ tmp_chunk.iter()) {
    -                //*a = (b & 0xff) as u8;
    -                *a = *b;
    -            }
    -            /* Get CRC bytes (not really needed by us, but required by SD) */
    -            let mut frame = [0u8; 2];
    -            self.read_data(&mut frame);
    -        }
    -        self.end_cmd();
    -        if flag {
    -            self.send_cmd(CMD::CMD12, 0, 0);
    -            self.get_response();
    -            self.end_cmd();
    -            self.end_cmd();
    -        }
    -        /* It is an error if not everything requested was read */
    -        if error {
    -            Err(())
    -        } else {
    -            Ok(())
    -        }
    -    }
    -
    -    /*
    -     * Writes a block to the SD
    -     * @param  data_buf: slice containing the data to be written to the SD.
    -     * @param  sector: address to write on.
    -     * @retval The SD Response:
    -     *         - `Err(())`: Sequence failed
    -     *         - `Ok(())`: Sequence succeed
    -     */
    -    pub fn write_sector(&self, data_buf: &[u8], sector: u32) -> Result<(), ()> {
    -        assert!(data_buf.len() >= SEC_LEN && (data_buf.len() % SEC_LEN) == 0);
    -        let mut frame = [0xff, 0x00];
    -        if data_buf.len() == SEC_LEN {
    -            frame[1] = SD_START_DATA_SINGLE_BLOCK_WRITE;
    -            self.send_cmd(CMD::CMD24, sector, 0);
    -        } else {
    -            frame[1] = SD_START_DATA_MULTIPLE_BLOCK_WRITE;
    -            self.send_cmd(
    -                CMD::ACMD23,
    -                (data_buf.len() / SEC_LEN).try_into().unwrap(),
    -                0,
    -            );
    -            self.get_response();
    -            self.end_cmd();
    -            self.send_cmd(CMD::CMD25, sector, 0);
    -        }
    -        /* Check if the SD acknowledged the write block command: R1 response (0x00: no errors) */
    -        if self.get_response() != 0x00 {
    -            self.end_cmd();
    -            return Err(());
    -        }
    -        //let mut dma_chunk = [0u32; SEC_LEN];
    -        let mut tmp_chunk = [0u8; SEC_LEN];
    -        for chunk in data_buf.chunks(SEC_LEN) {
    -            /* Send the data token to signify the start of the data */
    -            self.write_data(&frame);
    -            /* Write the block data to SD : write count data by block */
    -            for (a, &b) in /*dma_chunk*/ tmp_chunk.iter_mut().zip(chunk.iter()) {
    -                //*a = b.into();
    -                *a = b;
    -            }
    -            //self.write_data_dma(&mut dma_chunk);
    -            self.write_data(&tmp_chunk);
    -            /* Put dummy CRC bytes */
    -            self.write_data(&[0xff, 0xff]);
    -            /* Read data response */
    -            if self.get_dataresponse() != 0x00 {
    -                self.end_cmd();
    -                return Err(());
    -            }
    -        }
    -        self.end_cmd();
    -        self.end_cmd();
    -        Ok(())
    -    }
    -}
    -
    -/** GPIOHS GPIO number to use for controlling the SD card CS pin */
    -const SD_CS_GPIONUM: u8 = 7;
    -/** CS value passed to SPI controller, this is a dummy value as SPI0_CS3 is not mapping to anything
    - * in the FPIOA */
    -const SD_CS: u32 = 3;
    -
    -/** Connect pins to internal functions */
    -fn io_init() {
    -    fpioa::set_function(io::SPI0_SCLK, fpioa::function::SPI0_SCLK);
    -    fpioa::set_function(io::SPI0_MOSI, fpioa::function::SPI0_D0);
    -    fpioa::set_function(io::SPI0_MISO, fpioa::function::SPI0_D1);
    -    fpioa::set_function(io::SPI0_CS0, fpioa::function::gpiohs(SD_CS_GPIONUM));
    -    fpioa::set_io_pull(io::SPI0_CS0, fpioa::pull::DOWN); // GPIO output=pull down
    -}
    -
    -lazy_static! {
    -    static ref PERIPHERALS: UPIntrFreeCell<Peripherals> =
    -        unsafe { UPIntrFreeCell::new(Peripherals::take().unwrap()) };
    -}
    -
    -fn init_sdcard() -> SDCard<SPIImpl<SPI0>> {
    -    // wait previous output
    -    usleep(100000);
    -    let peripherals = unsafe { Peripherals::steal() };
    -    sysctl::pll_set_freq(sysctl::pll::PLL0, 800_000_000).unwrap();
    -    sysctl::pll_set_freq(sysctl::pll::PLL1, 300_000_000).unwrap();
    -    sysctl::pll_set_freq(sysctl::pll::PLL2, 45_158_400).unwrap();
    -    let clocks = k210_hal::clock::Clocks::new();
    -    peripherals.UARTHS.configure(115_200.bps(), &clocks);
    -    io_init();
    -
    -    let spi = peripherals.SPI0.constrain();
    -    let sd = SDCard::new(spi, SD_CS, SD_CS_GPIONUM);
    -    let info = sd.init().unwrap();
    -    let num_sectors = info.CardCapacity / 512;
    -    assert!(num_sectors > 0);
    -
    -    println!("init sdcard!");
    -    sd
    -}
    -
    -pub struct SDCardWrapper(UPIntrFreeCell<SDCard<SPIImpl<SPI0>>>);
    -
    -impl SDCardWrapper {
    -    pub fn new() -> Self {
    -        unsafe { Self(UPIntrFreeCell::new(init_sdcard())) }
    -    }
    -}
    -
    -impl BlockDevice for SDCardWrapper {
    -    fn read_block(&self, block_id: usize, buf: &mut [u8]) {
    -        self.0
    -            .exclusive_access()
    -            .read_sector(buf, block_id as u32)
    -            .unwrap();
    -    }
    -    fn write_block(&self, block_id: usize, buf: &[u8]) {
    -        self.0
    -            .exclusive_access()
    -            .write_sector(buf, block_id as u32)
    -            .unwrap();
    -    }
    -    fn handle_irq(&self) {
    -        unimplemented!();
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/drivers/block/virtio_blk.rs.html b/public/main/src/os/drivers/block/virtio_blk.rs.html deleted file mode 100644 index 34bbbac8..00000000 --- a/public/main/src/os/drivers/block/virtio_blk.rs.html +++ /dev/null @@ -1,266 +0,0 @@ -virtio_blk.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -129
    -130
    -
    use super::BlockDevice;
    -use crate::mm::{
    -    frame_alloc, frame_dealloc, kernel_token, FrameTracker, PageTable, PhysAddr, PhysPageNum,
    -    StepByOne, VirtAddr,
    -};
    -use crate::sync::{Condvar, UPIntrFreeCell};
    -use crate::task::schedule;
    -use crate::DEV_NON_BLOCKING_ACCESS;
    -use alloc::collections::BTreeMap;
    -use alloc::vec::Vec;
    -use lazy_static::*;
    -use virtio_drivers::{BlkResp, RespStatus, VirtIOBlk, VirtIOHeader};
    -
    -#[allow(unused)]
    -const VIRTIO0: usize = 0x10001000;
    -
    -pub struct VirtIOBlock {
    -    virtio_blk: UPIntrFreeCell<VirtIOBlk<'static>>,
    -    condvars: BTreeMap<u16, Condvar>,
    -}
    -
    -lazy_static! {
    -    static ref QUEUE_FRAMES: UPIntrFreeCell<Vec<FrameTracker>> = unsafe { UPIntrFreeCell::new(Vec::new()) };
    -}
    -
    -impl BlockDevice for VirtIOBlock {
    -    fn read_block(&self, block_id: usize, buf: &mut [u8]) {
    -        let nb = *DEV_NON_BLOCKING_ACCESS.exclusive_access();
    -        if nb {
    -            let mut resp = BlkResp::default();
    -            let task_cx_ptr = self.virtio_blk.exclusive_session(|blk| {
    -                let token = unsafe { blk.read_block_nb(block_id, buf, &mut resp).unwrap() };
    -                self.condvars.get(&token).unwrap().wait_no_sched()
    -            });
    -            schedule(task_cx_ptr);
    -            assert_eq!(
    -                resp.status(),
    -                RespStatus::Ok,
    -                "Error when reading VirtIOBlk"
    -            );
    -        } else {
    -            self.virtio_blk
    -                .exclusive_access()
    -                .read_block(block_id, buf)
    -                .expect("Error when reading VirtIOBlk");
    -        }
    -    }
    -    fn write_block(&self, block_id: usize, buf: &[u8]) {
    -        let nb = *DEV_NON_BLOCKING_ACCESS.exclusive_access();
    -        if nb {
    -            let mut resp = BlkResp::default();
    -            let task_cx_ptr = self.virtio_blk.exclusive_session(|blk| {
    -                let token = unsafe { blk.write_block_nb(block_id, buf, &mut resp).unwrap() };
    -                self.condvars.get(&token).unwrap().wait_no_sched()
    -            });
    -            schedule(task_cx_ptr);
    -            assert_eq!(
    -                resp.status(),
    -                RespStatus::Ok,
    -                "Error when writing VirtIOBlk"
    -            );
    -        } else {
    -            self.virtio_blk
    -                .exclusive_access()
    -                .write_block(block_id, buf)
    -                .expect("Error when writing VirtIOBlk");
    -        }
    -    }
    -    fn handle_irq(&self) {
    -        self.virtio_blk.exclusive_session(|blk| {
    -            while let Ok(token) = blk.pop_used() {
    -                self.condvars.get(&token).unwrap().signal();
    -            }
    -        });
    -    }
    -}
    -
    -impl VirtIOBlock {
    -    pub fn new() -> Self {
    -        let virtio_blk = unsafe {
    -            UPIntrFreeCell::new(VirtIOBlk::new(&mut *(VIRTIO0 as *mut VirtIOHeader)).unwrap())
    -        };
    -        let mut condvars = BTreeMap::new();
    -        let channels = virtio_blk.exclusive_access().virt_queue_size();
    -        for i in 0..channels {
    -            let condvar = Condvar::new();
    -            condvars.insert(i, condvar);
    -        }
    -        Self {
    -            virtio_blk,
    -            condvars,
    -        }
    -    }
    -}
    -
    -#[no_mangle]
    -pub extern "C" fn virtio_dma_alloc(pages: usize) -> PhysAddr {
    -    let mut ppn_base = PhysPageNum(0);
    -    for i in 0..pages {
    -        let frame = frame_alloc().unwrap();
    -        if i == 0 {
    -            ppn_base = frame.ppn;
    -        }
    -        assert_eq!(frame.ppn.0, ppn_base.0 + i);
    -        QUEUE_FRAMES.exclusive_access().push(frame);
    -    }
    -    ppn_base.into()
    -}
    -
    -#[no_mangle]
    -pub extern "C" fn virtio_dma_dealloc(pa: PhysAddr, pages: usize) -> i32 {
    -    let mut ppn_base: PhysPageNum = pa.into();
    -    for _ in 0..pages {
    -        frame_dealloc(ppn_base);
    -        ppn_base.step();
    -    }
    -    0
    -}
    -
    -#[no_mangle]
    -pub extern "C" fn virtio_phys_to_virt(paddr: PhysAddr) -> VirtAddr {
    -    VirtAddr(paddr.0)
    -}
    -
    -#[no_mangle]
    -pub extern "C" fn virtio_virt_to_phys(vaddr: VirtAddr) -> PhysAddr {
    -    PageTable::from_token(kernel_token())
    -        .translate_va(vaddr)
    -        .unwrap()
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/drivers/chardev/mod.rs.html b/public/main/src/os/drivers/chardev/mod.rs.html deleted file mode 100644 index b98696d2..00000000 --- a/public/main/src/os/drivers/chardev/mod.rs.html +++ /dev/null @@ -1,40 +0,0 @@ -mod.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -
    mod ns16550a;
    -
    -pub use ns16550a::NS16550a;
    -
    -use crate::board::CharDeviceImpl;
    -use alloc::sync::Arc;
    -use lazy_static::*;
    -
    -pub trait CharDevice {
    -    fn read(&self) -> u8;
    -    fn write(&self, ch: u8);
    -    fn handle_irq(&self);
    -}
    -
    -lazy_static! {
    -    pub static ref UART: Arc<CharDeviceImpl> = Arc::new(CharDeviceImpl::new());
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/drivers/chardev/ns16550a.rs.html b/public/main/src/os/drivers/chardev/ns16550a.rs.html deleted file mode 100644 index 28026916..00000000 --- a/public/main/src/os/drivers/chardev/ns16550a.rs.html +++ /dev/null @@ -1,358 +0,0 @@ -ns16550a.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -129
    -130
    -131
    -132
    -133
    -134
    -135
    -136
    -137
    -138
    -139
    -140
    -141
    -142
    -143
    -144
    -145
    -146
    -147
    -148
    -149
    -150
    -151
    -152
    -153
    -154
    -155
    -156
    -157
    -158
    -159
    -160
    -161
    -162
    -163
    -164
    -165
    -166
    -167
    -168
    -169
    -170
    -171
    -172
    -173
    -174
    -175
    -176
    -
    ///! Ref: https://www.lammertbies.nl/comm/info/serial-uart
    -///! Ref: ns16550a datasheet: https://datasheetspdf.com/pdf-file/605590/NationalSemiconductor/NS16550A/1
    -///! Ref: ns16450 datasheet: https://datasheetspdf.com/pdf-file/1311818/NationalSemiconductor/NS16450/1
    -
    -use super::CharDevice;
    -use crate::sync::{Condvar, UPIntrFreeCell};
    -use crate::task::schedule;
    -use alloc::collections::VecDeque;
    -use bitflags::*;
    -use volatile::{ReadOnly, Volatile, WriteOnly};
    -
    -bitflags! {
    -    /// InterruptEnableRegister
    -    pub struct IER: u8 {
    -        const RX_AVALIABLE = 1 << 0;
    -        const TX_EMPTY = 1 << 1;
    -    }
    -
    -    /// LineStatusRegister
    -    pub struct LSR: u8 {
    -        const DATA_AVAILABLE = 1 << 0;
    -        const THR_EMPTY = 1 << 5;
    -    }
    -
    -    /// Model Control Register
    -    pub struct MCR: u8 {
    -        const DATA_TERMINAL_READY = 1 << 0;
    -        const REQUEST_TO_SEND = 1 << 1;
    -        const AUX_OUTPUT1 = 1 << 2;
    -        const AUX_OUTPUT2 = 1 << 3;
    -    }
    -}
    -
    -#[repr(C)]
    -#[allow(dead_code)]
    -struct ReadWithoutDLAB {
    -    /// receiver buffer register
    -    pub rbr: ReadOnly<u8>,
    -    /// interrupt enable register
    -    pub ier: Volatile<IER>,
    -    /// interrupt identification register
    -    pub iir: ReadOnly<u8>,
    -    /// line control register
    -    pub lcr: Volatile<u8>,
    -    /// model control register
    -    pub mcr: Volatile<MCR>,
    -    /// line status register
    -    pub lsr: ReadOnly<LSR>,
    -    /// ignore MSR
    -    _padding1: ReadOnly<u8>,
    -    /// ignore SCR
    -    _padding2: ReadOnly<u8>,
    -}
    -
    -#[repr(C)]
    -#[allow(dead_code)]
    -struct WriteWithoutDLAB {
    -    /// transmitter holding register
    -    pub thr: WriteOnly<u8>,
    -    /// interrupt enable register
    -    pub ier: Volatile<IER>,
    -    /// ignore FCR
    -    _padding0: ReadOnly<u8>,
    -    /// line control register
    -    pub lcr: Volatile<u8>,
    -    /// modem control register
    -    pub mcr: Volatile<MCR>,
    -    /// line status register
    -    pub lsr: ReadOnly<LSR>,
    -    /// ignore other registers
    -    _padding1: ReadOnly<u16>,
    -}
    -
    -pub struct NS16550aRaw {
    -    base_addr: usize,
    -}
    -
    -impl NS16550aRaw {
    -    fn read_end(&mut self) -> &mut ReadWithoutDLAB {
    -        unsafe { &mut *(self.base_addr as *mut ReadWithoutDLAB) }
    -    }
    -
    -    fn write_end(&mut self) -> &mut WriteWithoutDLAB {
    -        unsafe { &mut *(self.base_addr as *mut WriteWithoutDLAB) }
    -    }
    -
    -    pub fn new(base_addr: usize) -> Self {
    -        Self { base_addr }
    -    }
    -
    -    pub fn init(&mut self) {
    -        let read_end = self.read_end();
    -        let mut mcr = MCR::empty();
    -        mcr |= MCR::DATA_TERMINAL_READY;
    -        mcr |= MCR::REQUEST_TO_SEND;
    -        mcr |= MCR::AUX_OUTPUT2;
    -        read_end.mcr.write(mcr);
    -        let ier = IER::RX_AVALIABLE;
    -        read_end.ier.write(ier);
    -    }
    -
    -    pub fn read(&mut self) -> Option<u8> {
    -        let read_end = self.read_end();
    -        let lsr = read_end.lsr.read();
    -        if lsr.contains(LSR::DATA_AVAILABLE) {
    -            Some(read_end.rbr.read())
    -        } else {
    -            None
    -        }
    -    }
    -
    -    pub fn write(&mut self, ch: u8) {
    -        let write_end = self.write_end();
    -        loop {
    -            if write_end.lsr.read().contains(LSR::THR_EMPTY) {
    -                write_end.thr.write(ch);
    -                break;
    -            }
    -        }
    -    }
    -}
    -
    -struct NS16550aInner {
    -    ns16550a: NS16550aRaw,
    -    read_buffer: VecDeque<u8>,
    -}
    -
    -pub struct NS16550a<const BASE_ADDR: usize> {
    -    inner: UPIntrFreeCell<NS16550aInner>,
    -    condvar: Condvar,
    -}
    -
    -impl<const BASE_ADDR: usize> NS16550a<BASE_ADDR> {
    -    pub fn new() -> Self {
    -        let mut inner = NS16550aInner {
    -            ns16550a: NS16550aRaw::new(BASE_ADDR),
    -            read_buffer: VecDeque::new(),
    -        };
    -        inner.ns16550a.init();
    -        Self {
    -            inner: unsafe { UPIntrFreeCell::new(inner) },
    -            condvar: Condvar::new(),
    -        }
    -    }
    -}
    -
    -impl<const BASE_ADDR: usize> CharDevice for NS16550a<BASE_ADDR> {
    -    fn read(&self) -> u8 {
    -        loop {
    -            let mut inner = self.inner.exclusive_access();
    -            if let Some(ch) = inner.read_buffer.pop_front() {
    -                return ch;
    -            } else {
    -                let task_cx_ptr = self.condvar.wait_no_sched();
    -                drop(inner);
    -                schedule(task_cx_ptr);
    -            }
    -        }
    -    }
    -    fn write(&self, ch: u8) {
    -        let mut inner = self.inner.exclusive_access();
    -        inner.ns16550a.write(ch);
    -    }
    -    fn handle_irq(&self) {
    -        let mut count = 0;
    -        self.inner.exclusive_session(|inner| {
    -            while let Some(ch) = inner.ns16550a.read() {
    -                count += 1;
    -                inner.read_buffer.push_back(ch);
    -            }
    -        });
    -        if count > 0 {
    -            self.condvar.signal();
    -        }
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/drivers/mod.rs.html b/public/main/src/os/drivers/mod.rs.html deleted file mode 100644 index c7fcb12d..00000000 --- a/public/main/src/os/drivers/mod.rs.html +++ /dev/null @@ -1,18 +0,0 @@ -mod.rs - source -
    1
    -2
    -3
    -4
    -5
    -6
    -
    pub mod block;
    -pub mod chardev;
    -pub mod plic;
    -
    -pub use block::BLOCK_DEVICE;
    -pub use chardev::UART;
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/drivers/plic.rs.html b/public/main/src/os/drivers/plic.rs.html deleted file mode 100644 index a5bcfab8..00000000 --- a/public/main/src/os/drivers/plic.rs.html +++ /dev/null @@ -1,254 +0,0 @@ -plic.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -
    #[allow(clippy::upper_case_acronyms)]
    -pub struct PLIC {
    -    base_addr: usize,
    -}
    -
    -#[derive(Copy, Clone)]
    -pub enum IntrTargetPriority {
    -    Machine = 0,
    -    Supervisor = 1,
    -}
    -
    -impl IntrTargetPriority {
    -    pub fn supported_number() -> usize {
    -        2
    -    }
    -}
    -
    -impl PLIC {
    -    fn priority_ptr(&self, intr_source_id: usize) -> *mut u32 {
    -        assert!(intr_source_id > 0 && intr_source_id <= 132);
    -        (self.base_addr + intr_source_id * 4) as *mut u32
    -    }
    -    fn hart_id_with_priority(hart_id: usize, target_priority: IntrTargetPriority) -> usize {
    -        let priority_num = IntrTargetPriority::supported_number();
    -        hart_id * priority_num + target_priority as usize
    -    }
    -    fn enable_ptr(
    -        &self,
    -        hart_id: usize,
    -        target_priority: IntrTargetPriority,
    -        intr_source_id: usize,
    -    ) -> (*mut u32, usize) {
    -        let id = Self::hart_id_with_priority(hart_id, target_priority);
    -        let (reg_id, reg_shift) = (intr_source_id / 32, intr_source_id % 32);
    -        (
    -            (self.base_addr + 0x2000 + 0x80 * id + 0x4 * reg_id) as *mut u32,
    -            reg_shift,
    -        )
    -    }
    -    fn threshold_ptr_of_hart_with_priority(
    -        &self,
    -        hart_id: usize,
    -        target_priority: IntrTargetPriority,
    -    ) -> *mut u32 {
    -        let id = Self::hart_id_with_priority(hart_id, target_priority);
    -        (self.base_addr + 0x20_0000 + 0x1000 * id) as *mut u32
    -    }
    -    fn claim_comp_ptr_of_hart_with_priority(
    -        &self,
    -        hart_id: usize,
    -        target_priority: IntrTargetPriority,
    -    ) -> *mut u32 {
    -        let id = Self::hart_id_with_priority(hart_id, target_priority);
    -        (self.base_addr + 0x20_0004 + 0x1000 * id) as *mut u32
    -    }
    -    pub unsafe fn new(base_addr: usize) -> Self {
    -        Self { base_addr }
    -    }
    -    pub fn set_priority(&mut self, intr_source_id: usize, priority: u32) {
    -        assert!(priority < 8);
    -        unsafe {
    -            self.priority_ptr(intr_source_id).write_volatile(priority);
    -        }
    -    }
    -    #[allow(unused)]
    -    pub fn get_priority(&mut self, intr_source_id: usize) -> u32 {
    -        unsafe { self.priority_ptr(intr_source_id).read_volatile() & 7 }
    -    }
    -    pub fn enable(
    -        &mut self,
    -        hart_id: usize,
    -        target_priority: IntrTargetPriority,
    -        intr_source_id: usize,
    -    ) {
    -        let (reg_ptr, shift) = self.enable_ptr(hart_id, target_priority, intr_source_id);
    -        unsafe {
    -            reg_ptr.write_volatile(reg_ptr.read_volatile() | 1 << shift);
    -        }
    -    }
    -    #[allow(unused)]
    -    pub fn disable(
    -        &mut self,
    -        hart_id: usize,
    -        target_priority: IntrTargetPriority,
    -        intr_source_id: usize,
    -    ) {
    -        let (reg_ptr, shift) = self.enable_ptr(hart_id, target_priority, intr_source_id);
    -        unsafe {
    -            reg_ptr.write_volatile(reg_ptr.read_volatile() & (!(1u32 << shift)));
    -        }
    -    }
    -    pub fn set_threshold(
    -        &mut self,
    -        hart_id: usize,
    -        target_priority: IntrTargetPriority,
    -        threshold: u32,
    -    ) {
    -        assert!(threshold < 8);
    -        let threshold_ptr = self.threshold_ptr_of_hart_with_priority(hart_id, target_priority);
    -        unsafe {
    -            threshold_ptr.write_volatile(threshold);
    -        }
    -    }
    -    #[allow(unused)]
    -    pub fn get_threshold(&mut self, hart_id: usize, target_priority: IntrTargetPriority) -> u32 {
    -        let threshold_ptr = self.threshold_ptr_of_hart_with_priority(hart_id, target_priority);
    -        unsafe { threshold_ptr.read_volatile() & 7 }
    -    }
    -    pub fn claim(&mut self, hart_id: usize, target_priority: IntrTargetPriority) -> u32 {
    -        let claim_comp_ptr = self.claim_comp_ptr_of_hart_with_priority(hart_id, target_priority);
    -        unsafe { claim_comp_ptr.read_volatile() }
    -    }
    -    pub fn complete(
    -        &mut self,
    -        hart_id: usize,
    -        target_priority: IntrTargetPriority,
    -        completion: u32,
    -    ) {
    -        let claim_comp_ptr = self.claim_comp_ptr_of_hart_with_priority(hart_id, target_priority);
    -        unsafe {
    -            claim_comp_ptr.write_volatile(completion);
    -        }
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/fs/inode.rs.html b/public/main/src/os/fs/inode.rs.html deleted file mode 100644 index 5a327283..00000000 --- a/public/main/src/os/fs/inode.rs.html +++ /dev/null @@ -1,284 +0,0 @@ -inode.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -129
    -130
    -131
    -132
    -133
    -134
    -135
    -136
    -137
    -138
    -139
    -
    use super::File;
    -use crate::drivers::BLOCK_DEVICE;
    -use crate::mm::UserBuffer;
    -use crate::sync::UPIntrFreeCell;
    -use alloc::sync::Arc;
    -use alloc::vec::Vec;
    -use bitflags::*;
    -use easy_fs::{EasyFileSystem, Inode};
    -use lazy_static::*;
    -
    -pub struct OSInode {
    -    readable: bool,
    -    writable: bool,
    -    inner: UPIntrFreeCell<OSInodeInner>,
    -}
    -
    -pub struct OSInodeInner {
    -    offset: usize,
    -    inode: Arc<Inode>,
    -}
    -
    -impl OSInode {
    -    pub fn new(readable: bool, writable: bool, inode: Arc<Inode>) -> Self {
    -        Self {
    -            readable,
    -            writable,
    -            inner: unsafe { UPIntrFreeCell::new(OSInodeInner { offset: 0, inode }) },
    -        }
    -    }
    -    pub fn read_all(&self) -> Vec<u8> {
    -        let mut inner = self.inner.exclusive_access();
    -        let mut buffer = [0u8; 512];
    -        let mut v: Vec<u8> = Vec::new();
    -        loop {
    -            let len = inner.inode.read_at(inner.offset, &mut buffer);
    -            if len == 0 {
    -                break;
    -            }
    -            inner.offset += len;
    -            v.extend_from_slice(&buffer[..len]);
    -        }
    -        v
    -    }
    -}
    -
    -lazy_static! {
    -    pub static ref ROOT_INODE: Arc<Inode> = {
    -        let efs = EasyFileSystem::open(BLOCK_DEVICE.clone());
    -        Arc::new(EasyFileSystem::root_inode(&efs))
    -    };
    -}
    -
    -pub fn list_apps() {
    -    println!("/**** APPS ****");
    -    for app in ROOT_INODE.ls() {
    -        println!("{}", app);
    -    }
    -    println!("**************/")
    -}
    -
    -bitflags! {
    -    pub struct OpenFlags: u32 {
    -        const RDONLY = 0;
    -        const WRONLY = 1 << 0;
    -        const RDWR = 1 << 1;
    -        const CREATE = 1 << 9;
    -        const TRUNC = 1 << 10;
    -    }
    -}
    -
    -impl OpenFlags {
    -    /// Do not check validity for simplicity
    -    /// Return (readable, writable)
    -    pub fn read_write(&self) -> (bool, bool) {
    -        if self.is_empty() {
    -            (true, false)
    -        } else if self.contains(Self::WRONLY) {
    -            (false, true)
    -        } else {
    -            (true, true)
    -        }
    -    }
    -}
    -
    -pub fn open_file(name: &str, flags: OpenFlags) -> Option<Arc<OSInode>> {
    -    let (readable, writable) = flags.read_write();
    -    if flags.contains(OpenFlags::CREATE) {
    -        if let Some(inode) = ROOT_INODE.find(name) {
    -            // clear size
    -            inode.clear();
    -            Some(Arc::new(OSInode::new(readable, writable, inode)))
    -        } else {
    -            // create file
    -            ROOT_INODE
    -                .create(name)
    -                .map(|inode| Arc::new(OSInode::new(readable, writable, inode)))
    -        }
    -    } else {
    -        ROOT_INODE.find(name).map(|inode| {
    -            if flags.contains(OpenFlags::TRUNC) {
    -                inode.clear();
    -            }
    -            Arc::new(OSInode::new(readable, writable, inode))
    -        })
    -    }
    -}
    -
    -impl File for OSInode {
    -    fn readable(&self) -> bool {
    -        self.readable
    -    }
    -    fn writable(&self) -> bool {
    -        self.writable
    -    }
    -    fn read(&self, mut buf: UserBuffer) -> usize {
    -        let mut inner = self.inner.exclusive_access();
    -        let mut total_read_size = 0usize;
    -        for slice in buf.buffers.iter_mut() {
    -            let read_size = inner.inode.read_at(inner.offset, *slice);
    -            if read_size == 0 {
    -                break;
    -            }
    -            inner.offset += read_size;
    -            total_read_size += read_size;
    -        }
    -        total_read_size
    -    }
    -    fn write(&self, buf: UserBuffer) -> usize {
    -        let mut inner = self.inner.exclusive_access();
    -        let mut total_write_size = 0usize;
    -        for slice in buf.buffers.iter() {
    -            let write_size = inner.inode.write_at(inner.offset, *slice);
    -            assert_eq!(write_size, slice.len());
    -            inner.offset += write_size;
    -            total_write_size += write_size;
    -        }
    -        total_write_size
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/fs/mod.rs.html b/public/main/src/os/fs/mod.rs.html deleted file mode 100644 index a96810d9..00000000 --- a/public/main/src/os/fs/mod.rs.html +++ /dev/null @@ -1,38 +0,0 @@ -mod.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -
    mod inode;
    -mod pipe;
    -mod stdio;
    -
    -use crate::mm::UserBuffer;
    -
    -pub trait File: Send + Sync {
    -    fn readable(&self) -> bool;
    -    fn writable(&self) -> bool;
    -    fn read(&self, buf: UserBuffer) -> usize;
    -    fn write(&self, buf: UserBuffer) -> usize;
    -}
    -
    -pub use inode::{list_apps, open_file, OSInode, OpenFlags};
    -pub use pipe::{make_pipe, Pipe};
    -pub use stdio::{Stdin, Stdout};
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/fs/pipe.rs.html b/public/main/src/os/fs/pipe.rs.html deleted file mode 100644 index a513e20d..00000000 --- a/public/main/src/os/fs/pipe.rs.html +++ /dev/null @@ -1,338 +0,0 @@ -pipe.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -129
    -130
    -131
    -132
    -133
    -134
    -135
    -136
    -137
    -138
    -139
    -140
    -141
    -142
    -143
    -144
    -145
    -146
    -147
    -148
    -149
    -150
    -151
    -152
    -153
    -154
    -155
    -156
    -157
    -158
    -159
    -160
    -161
    -162
    -163
    -164
    -165
    -166
    -
    use super::File;
    -use crate::mm::UserBuffer;
    -use crate::sync::UPIntrFreeCell;
    -use alloc::sync::{Arc, Weak};
    -
    -use crate::task::suspend_current_and_run_next;
    -
    -pub struct Pipe {
    -    readable: bool,
    -    writable: bool,
    -    buffer: Arc<UPIntrFreeCell<PipeRingBuffer>>,
    -}
    -
    -impl Pipe {
    -    pub fn read_end_with_buffer(buffer: Arc<UPIntrFreeCell<PipeRingBuffer>>) -> Self {
    -        Self {
    -            readable: true,
    -            writable: false,
    -            buffer,
    -        }
    -    }
    -    pub fn write_end_with_buffer(buffer: Arc<UPIntrFreeCell<PipeRingBuffer>>) -> Self {
    -        Self {
    -            readable: false,
    -            writable: true,
    -            buffer,
    -        }
    -    }
    -}
    -
    -const RING_BUFFER_SIZE: usize = 32;
    -
    -#[derive(Copy, Clone, PartialEq)]
    -enum RingBufferStatus {
    -    Full,
    -    Empty,
    -    Normal,
    -}
    -
    -pub struct PipeRingBuffer {
    -    arr: [u8; RING_BUFFER_SIZE],
    -    head: usize,
    -    tail: usize,
    -    status: RingBufferStatus,
    -    write_end: Option<Weak<Pipe>>,
    -}
    -
    -impl PipeRingBuffer {
    -    pub fn new() -> Self {
    -        Self {
    -            arr: [0; RING_BUFFER_SIZE],
    -            head: 0,
    -            tail: 0,
    -            status: RingBufferStatus::Empty,
    -            write_end: None,
    -        }
    -    }
    -    pub fn set_write_end(&mut self, write_end: &Arc<Pipe>) {
    -        self.write_end = Some(Arc::downgrade(write_end));
    -    }
    -    pub fn write_byte(&mut self, byte: u8) {
    -        self.status = RingBufferStatus::Normal;
    -        self.arr[self.tail] = byte;
    -        self.tail = (self.tail + 1) % RING_BUFFER_SIZE;
    -        if self.tail == self.head {
    -            self.status = RingBufferStatus::Full;
    -        }
    -    }
    -    pub fn read_byte(&mut self) -> u8 {
    -        self.status = RingBufferStatus::Normal;
    -        let c = self.arr[self.head];
    -        self.head = (self.head + 1) % RING_BUFFER_SIZE;
    -        if self.head == self.tail {
    -            self.status = RingBufferStatus::Empty;
    -        }
    -        c
    -    }
    -    pub fn available_read(&self) -> usize {
    -        if self.status == RingBufferStatus::Empty {
    -            0
    -        } else if self.tail > self.head {
    -            self.tail - self.head
    -        } else {
    -            self.tail + RING_BUFFER_SIZE - self.head
    -        }
    -    }
    -    pub fn available_write(&self) -> usize {
    -        if self.status == RingBufferStatus::Full {
    -            0
    -        } else {
    -            RING_BUFFER_SIZE - self.available_read()
    -        }
    -    }
    -    pub fn all_write_ends_closed(&self) -> bool {
    -        self.write_end.as_ref().unwrap().upgrade().is_none()
    -    }
    -}
    -
    -/// Return (read_end, write_end)
    -pub fn make_pipe() -> (Arc<Pipe>, Arc<Pipe>) {
    -    let buffer = Arc::new(unsafe { UPIntrFreeCell::new(PipeRingBuffer::new()) });
    -    let read_end = Arc::new(Pipe::read_end_with_buffer(buffer.clone()));
    -    let write_end = Arc::new(Pipe::write_end_with_buffer(buffer.clone()));
    -    buffer.exclusive_access().set_write_end(&write_end);
    -    (read_end, write_end)
    -}
    -
    -impl File for Pipe {
    -    fn readable(&self) -> bool {
    -        self.readable
    -    }
    -    fn writable(&self) -> bool {
    -        self.writable
    -    }
    -    fn read(&self, buf: UserBuffer) -> usize {
    -        assert!(self.readable());
    -        let mut buf_iter = buf.into_iter();
    -        let mut read_size = 0usize;
    -        loop {
    -            let mut ring_buffer = self.buffer.exclusive_access();
    -            let loop_read = ring_buffer.available_read();
    -            if loop_read == 0 {
    -                if ring_buffer.all_write_ends_closed() {
    -                    return read_size;
    -                }
    -                drop(ring_buffer);
    -                suspend_current_and_run_next();
    -                continue;
    -            }
    -            // read at most loop_read bytes
    -            for _ in 0..loop_read {
    -                if let Some(byte_ref) = buf_iter.next() {
    -                    unsafe {
    -                        *byte_ref = ring_buffer.read_byte();
    -                    }
    -                    read_size += 1;
    -                } else {
    -                    return read_size;
    -                }
    -            }
    -        }
    -    }
    -    fn write(&self, buf: UserBuffer) -> usize {
    -        assert!(self.writable());
    -        let mut buf_iter = buf.into_iter();
    -        let mut write_size = 0usize;
    -        loop {
    -            let mut ring_buffer = self.buffer.exclusive_access();
    -            let loop_write = ring_buffer.available_write();
    -            if loop_write == 0 {
    -                drop(ring_buffer);
    -                suspend_current_and_run_next();
    -                continue;
    -            }
    -            // write at most loop_write bytes
    -            for _ in 0..loop_write {
    -                if let Some(byte_ref) = buf_iter.next() {
    -                    ring_buffer.write_byte(unsafe { *byte_ref });
    -                    write_size += 1;
    -                } else {
    -                    return write_size;
    -                }
    -            }
    -        }
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/fs/stdio.rs.html b/public/main/src/os/fs/stdio.rs.html deleted file mode 100644 index 9323b00e..00000000 --- a/public/main/src/os/fs/stdio.rs.html +++ /dev/null @@ -1,96 +0,0 @@ -stdio.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -
    use super::File;
    -use crate::drivers::chardev::{CharDevice, UART};
    -use crate::mm::UserBuffer;
    -
    -pub struct Stdin;
    -pub struct Stdout;
    -
    -impl File for Stdin {
    -    fn readable(&self) -> bool {
    -        true
    -    }
    -    fn writable(&self) -> bool {
    -        false
    -    }
    -    fn read(&self, mut user_buf: UserBuffer) -> usize {
    -        assert_eq!(user_buf.len(), 1);
    -        //println!("before UART.read() in Stdin::read()");
    -        let ch = UART.read();
    -        unsafe {
    -            user_buf.buffers[0].as_mut_ptr().write_volatile(ch);
    -        }
    -        1
    -    }
    -    fn write(&self, _user_buf: UserBuffer) -> usize {
    -        panic!("Cannot write to stdin!");
    -    }
    -}
    -
    -impl File for Stdout {
    -    fn readable(&self) -> bool {
    -        false
    -    }
    -    fn writable(&self) -> bool {
    -        true
    -    }
    -    fn read(&self, _user_buf: UserBuffer) -> usize {
    -        panic!("Cannot read from stdout!");
    -    }
    -    fn write(&self, user_buf: UserBuffer) -> usize {
    -        for buffer in user_buf.buffers.iter() {
    -            print!("{}", core::str::from_utf8(*buffer).unwrap());
    -        }
    -        user_buf.len()
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/lang_items.rs.html b/public/main/src/os/lang_items.rs.html deleted file mode 100644 index 3510fcf6..00000000 --- a/public/main/src/os/lang_items.rs.html +++ /dev/null @@ -1,80 +0,0 @@ -lang_items.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -
    use crate::sbi::shutdown;
    -use crate::task::current_kstack_top;
    -use core::arch::asm;
    -use core::panic::PanicInfo;
    -
    -#[panic_handler]
    -fn panic(info: &PanicInfo) -> ! {
    -    if let Some(location) = info.location() {
    -        println!(
    -            "[kernel] Panicked at {}:{} {}",
    -            location.file(),
    -            location.line(),
    -            info.message().unwrap()
    -        );
    -    } else {
    -        println!("[kernel] Panicked: {}", info.message().unwrap());
    -    }
    -    unsafe {
    -        backtrace();
    -    }
    -    shutdown()
    -}
    -
    -unsafe fn backtrace() {
    -    let mut fp: usize;
    -    let stop = current_kstack_top();
    -    asm!("mv {}, s0", out(reg) fp);
    -    println!("---START BACKTRACE---");
    -    for i in 0..10 {
    -        if fp == stop {
    -            break;
    -        }
    -        println!("#{}:ra={:#x}", i, *((fp - 8) as *const usize));
    -        fp = *((fp - 16) as *const usize);
    -    }
    -    println!("---END   BACKTRACE---");
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/main.rs.html b/public/main/src/os/main.rs.html deleted file mode 100644 index 71a3606a..00000000 --- a/public/main/src/os/main.rs.html +++ /dev/null @@ -1,136 +0,0 @@ -main.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -
    #![no_std]
    -#![no_main]
    -#![feature(panic_info_message)]
    -#![feature(alloc_error_handler)]
    -
    -extern crate alloc;
    -
    -#[macro_use]
    -extern crate bitflags;
    -
    -#[cfg(feature = "board_k210")]
    -#[path = "boards/k210.rs"]
    -mod board;
    -#[cfg(not(any(feature = "board_k210")))]
    -#[path = "boards/qemu.rs"]
    -mod board;
    -
    -#[macro_use]
    -mod console;
    -mod config;
    -mod drivers;
    -mod fs;
    -mod lang_items;
    -mod mm;
    -mod sbi;
    -mod sync;
    -mod syscall;
    -mod task;
    -mod timer;
    -mod trap;
    -
    -core::arch::global_asm!(include_str!("entry.asm"));
    -
    -fn clear_bss() {
    -    extern "C" {
    -        fn sbss();
    -        fn ebss();
    -    }
    -    unsafe {
    -        core::slice::from_raw_parts_mut(sbss as usize as *mut u8, ebss as usize - sbss as usize)
    -            .fill(0);
    -    }
    -}
    -
    -use lazy_static::*;
    -use sync::UPIntrFreeCell;
    -
    -lazy_static! {
    -    pub static ref DEV_NON_BLOCKING_ACCESS: UPIntrFreeCell<bool> = unsafe { UPIntrFreeCell::new(false) };
    -}
    -
    -#[no_mangle]
    -pub fn rust_main() -> ! {
    -    clear_bss();
    -    mm::init();
    -    trap::init();
    -    trap::enable_timer_interrupt();
    -    timer::set_next_trigger();
    -    board::device_init();
    -    fs::list_apps();
    -    task::add_initproc();
    -    *DEV_NON_BLOCKING_ACCESS.exclusive_access() = true;
    -    task::run_tasks();
    -    panic!("Unreachable in rust_main!");
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/mm/address.rs.html b/public/main/src/os/mm/address.rs.html deleted file mode 100644 index ae243b29..00000000 --- a/public/main/src/os/mm/address.rs.html +++ /dev/null @@ -1,522 +0,0 @@ -address.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -129
    -130
    -131
    -132
    -133
    -134
    -135
    -136
    -137
    -138
    -139
    -140
    -141
    -142
    -143
    -144
    -145
    -146
    -147
    -148
    -149
    -150
    -151
    -152
    -153
    -154
    -155
    -156
    -157
    -158
    -159
    -160
    -161
    -162
    -163
    -164
    -165
    -166
    -167
    -168
    -169
    -170
    -171
    -172
    -173
    -174
    -175
    -176
    -177
    -178
    -179
    -180
    -181
    -182
    -183
    -184
    -185
    -186
    -187
    -188
    -189
    -190
    -191
    -192
    -193
    -194
    -195
    -196
    -197
    -198
    -199
    -200
    -201
    -202
    -203
    -204
    -205
    -206
    -207
    -208
    -209
    -210
    -211
    -212
    -213
    -214
    -215
    -216
    -217
    -218
    -219
    -220
    -221
    -222
    -223
    -224
    -225
    -226
    -227
    -228
    -229
    -230
    -231
    -232
    -233
    -234
    -235
    -236
    -237
    -238
    -239
    -240
    -241
    -242
    -243
    -244
    -245
    -246
    -247
    -248
    -249
    -250
    -251
    -252
    -253
    -254
    -255
    -256
    -257
    -258
    -
    use super::PageTableEntry;
    -use crate::config::{PAGE_SIZE, PAGE_SIZE_BITS};
    -use core::fmt::{self, Debug, Formatter};
    -
    -const PA_WIDTH_SV39: usize = 56;
    -const VA_WIDTH_SV39: usize = 39;
    -const PPN_WIDTH_SV39: usize = PA_WIDTH_SV39 - PAGE_SIZE_BITS;
    -const VPN_WIDTH_SV39: usize = VA_WIDTH_SV39 - PAGE_SIZE_BITS;
    -
    -/// Definitions
    -#[repr(C)]
    -#[derive(Copy, Clone, Ord, PartialOrd, Eq, PartialEq)]
    -pub struct PhysAddr(pub usize);
    -
    -#[repr(C)]
    -#[derive(Copy, Clone, Ord, PartialOrd, Eq, PartialEq)]
    -pub struct VirtAddr(pub usize);
    -
    -#[repr(C)]
    -#[derive(Copy, Clone, Ord, PartialOrd, Eq, PartialEq)]
    -pub struct PhysPageNum(pub usize);
    -
    -#[repr(C)]
    -#[derive(Copy, Clone, Ord, PartialOrd, Eq, PartialEq)]
    -pub struct VirtPageNum(pub usize);
    -
    -/// Debugging
    -
    -impl Debug for VirtAddr {
    -    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
    -        f.write_fmt(format_args!("VA:{:#x}", self.0))
    -    }
    -}
    -impl Debug for VirtPageNum {
    -    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
    -        f.write_fmt(format_args!("VPN:{:#x}", self.0))
    -    }
    -}
    -impl Debug for PhysAddr {
    -    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
    -        f.write_fmt(format_args!("PA:{:#x}", self.0))
    -    }
    -}
    -impl Debug for PhysPageNum {
    -    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
    -        f.write_fmt(format_args!("PPN:{:#x}", self.0))
    -    }
    -}
    -
    -/// T: {PhysAddr, VirtAddr, PhysPageNum, VirtPageNum}
    -/// T -> usize: T.0
    -/// usize -> T: usize.into()
    -
    -impl From<usize> for PhysAddr {
    -    fn from(v: usize) -> Self {
    -        Self(v & ((1 << PA_WIDTH_SV39) - 1))
    -    }
    -}
    -impl From<usize> for PhysPageNum {
    -    fn from(v: usize) -> Self {
    -        Self(v & ((1 << PPN_WIDTH_SV39) - 1))
    -    }
    -}
    -impl From<usize> for VirtAddr {
    -    fn from(v: usize) -> Self {
    -        Self(v & ((1 << VA_WIDTH_SV39) - 1))
    -    }
    -}
    -impl From<usize> for VirtPageNum {
    -    fn from(v: usize) -> Self {
    -        Self(v & ((1 << VPN_WIDTH_SV39) - 1))
    -    }
    -}
    -impl From<PhysAddr> for usize {
    -    fn from(v: PhysAddr) -> Self {
    -        v.0
    -    }
    -}
    -impl From<PhysPageNum> for usize {
    -    fn from(v: PhysPageNum) -> Self {
    -        v.0
    -    }
    -}
    -impl From<VirtAddr> for usize {
    -    fn from(v: VirtAddr) -> Self {
    -        v.0
    -    }
    -}
    -impl From<VirtPageNum> for usize {
    -    fn from(v: VirtPageNum) -> Self {
    -        v.0
    -    }
    -}
    -
    -impl VirtAddr {
    -    pub fn floor(&self) -> VirtPageNum {
    -        VirtPageNum(self.0 / PAGE_SIZE)
    -    }
    -    pub fn ceil(&self) -> VirtPageNum {
    -        VirtPageNum((self.0 - 1 + PAGE_SIZE) / PAGE_SIZE)
    -    }
    -    pub fn page_offset(&self) -> usize {
    -        self.0 & (PAGE_SIZE - 1)
    -    }
    -    pub fn aligned(&self) -> bool {
    -        self.page_offset() == 0
    -    }
    -}
    -impl From<VirtAddr> for VirtPageNum {
    -    fn from(v: VirtAddr) -> Self {
    -        assert_eq!(v.page_offset(), 0);
    -        v.floor()
    -    }
    -}
    -impl From<VirtPageNum> for VirtAddr {
    -    fn from(v: VirtPageNum) -> Self {
    -        Self(v.0 << PAGE_SIZE_BITS)
    -    }
    -}
    -impl PhysAddr {
    -    pub fn floor(&self) -> PhysPageNum {
    -        PhysPageNum(self.0 / PAGE_SIZE)
    -    }
    -    pub fn ceil(&self) -> PhysPageNum {
    -        PhysPageNum((self.0 - 1 + PAGE_SIZE) / PAGE_SIZE)
    -    }
    -    pub fn page_offset(&self) -> usize {
    -        self.0 & (PAGE_SIZE - 1)
    -    }
    -    pub fn aligned(&self) -> bool {
    -        self.page_offset() == 0
    -    }
    -}
    -impl From<PhysAddr> for PhysPageNum {
    -    fn from(v: PhysAddr) -> Self {
    -        assert_eq!(v.page_offset(), 0);
    -        v.floor()
    -    }
    -}
    -impl From<PhysPageNum> for PhysAddr {
    -    fn from(v: PhysPageNum) -> Self {
    -        Self(v.0 << PAGE_SIZE_BITS)
    -    }
    -}
    -
    -impl VirtPageNum {
    -    pub fn indexes(&self) -> [usize; 3] {
    -        let mut vpn = self.0;
    -        let mut idx = [0usize; 3];
    -        for i in (0..3).rev() {
    -            idx[i] = vpn & 511;
    -            vpn >>= 9;
    -        }
    -        idx
    -    }
    -}
    -
    -impl PhysAddr {
    -    pub fn get_ref<T>(&self) -> &'static T {
    -        unsafe { (self.0 as *const T).as_ref().unwrap() }
    -    }
    -    pub fn get_mut<T>(&self) -> &'static mut T {
    -        unsafe { (self.0 as *mut T).as_mut().unwrap() }
    -    }
    -}
    -impl PhysPageNum {
    -    pub fn get_pte_array(&self) -> &'static mut [PageTableEntry] {
    -        let pa: PhysAddr = (*self).into();
    -        unsafe { core::slice::from_raw_parts_mut(pa.0 as *mut PageTableEntry, 512) }
    -    }
    -    pub fn get_bytes_array(&self) -> &'static mut [u8] {
    -        let pa: PhysAddr = (*self).into();
    -        unsafe { core::slice::from_raw_parts_mut(pa.0 as *mut u8, 4096) }
    -    }
    -    pub fn get_mut<T>(&self) -> &'static mut T {
    -        let pa: PhysAddr = (*self).into();
    -        pa.get_mut()
    -    }
    -}
    -
    -pub trait StepByOne {
    -    fn step(&mut self);
    -}
    -impl StepByOne for VirtPageNum {
    -    fn step(&mut self) {
    -        self.0 += 1;
    -    }
    -}
    -impl StepByOne for PhysPageNum {
    -    fn step(&mut self) {
    -        self.0 += 1;
    -    }
    -}
    -
    -#[derive(Copy, Clone)]
    -pub struct SimpleRange<T>
    -where
    -    T: StepByOne + Copy + PartialEq + PartialOrd + Debug,
    -{
    -    l: T,
    -    r: T,
    -}
    -impl<T> SimpleRange<T>
    -where
    -    T: StepByOne + Copy + PartialEq + PartialOrd + Debug,
    -{
    -    pub fn new(start: T, end: T) -> Self {
    -        assert!(start <= end, "start {:?} > end {:?}!", start, end);
    -        Self { l: start, r: end }
    -    }
    -    pub fn get_start(&self) -> T {
    -        self.l
    -    }
    -    pub fn get_end(&self) -> T {
    -        self.r
    -    }
    -}
    -impl<T> IntoIterator for SimpleRange<T>
    -where
    -    T: StepByOne + Copy + PartialEq + PartialOrd + Debug,
    -{
    -    type Item = T;
    -    type IntoIter = SimpleRangeIterator<T>;
    -    fn into_iter(self) -> Self::IntoIter {
    -        SimpleRangeIterator::new(self.l, self.r)
    -    }
    -}
    -pub struct SimpleRangeIterator<T>
    -where
    -    T: StepByOne + Copy + PartialEq + PartialOrd + Debug,
    -{
    -    current: T,
    -    end: T,
    -}
    -impl<T> SimpleRangeIterator<T>
    -where
    -    T: StepByOne + Copy + PartialEq + PartialOrd + Debug,
    -{
    -    pub fn new(l: T, r: T) -> Self {
    -        Self { current: l, end: r }
    -    }
    -}
    -impl<T> Iterator for SimpleRangeIterator<T>
    -where
    -    T: StepByOne + Copy + PartialEq + PartialOrd + Debug,
    -{
    -    type Item = T;
    -    fn next(&mut self) -> Option<Self::Item> {
    -        if self.current == self.end {
    -            None
    -        } else {
    -            let t = self.current;
    -            self.current.step();
    -            Some(t)
    -        }
    -    }
    -}
    -pub type VPNRange = SimpleRange<VirtPageNum>;
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/mm/frame_allocator.rs.html b/public/main/src/os/mm/frame_allocator.rs.html deleted file mode 100644 index 85a8a452..00000000 --- a/public/main/src/os/mm/frame_allocator.rs.html +++ /dev/null @@ -1,260 +0,0 @@ -frame_allocator.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -
    use super::{PhysAddr, PhysPageNum};
    -use crate::config::MEMORY_END;
    -use crate::sync::UPIntrFreeCell;
    -use alloc::vec::Vec;
    -use core::fmt::{self, Debug, Formatter};
    -use lazy_static::*;
    -
    -pub struct FrameTracker {
    -    pub ppn: PhysPageNum,
    -}
    -
    -impl FrameTracker {
    -    pub fn new(ppn: PhysPageNum) -> Self {
    -        // page cleaning
    -        let bytes_array = ppn.get_bytes_array();
    -        for i in bytes_array {
    -            *i = 0;
    -        }
    -        Self { ppn }
    -    }
    -}
    -
    -impl Debug for FrameTracker {
    -    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
    -        f.write_fmt(format_args!("FrameTracker:PPN={:#x}", self.ppn.0))
    -    }
    -}
    -
    -impl Drop for FrameTracker {
    -    fn drop(&mut self) {
    -        frame_dealloc(self.ppn);
    -    }
    -}
    -
    -trait FrameAllocator {
    -    fn new() -> Self;
    -    fn alloc(&mut self) -> Option<PhysPageNum>;
    -    fn dealloc(&mut self, ppn: PhysPageNum);
    -}
    -
    -pub struct StackFrameAllocator {
    -    current: usize,
    -    end: usize,
    -    recycled: Vec<usize>,
    -}
    -
    -impl StackFrameAllocator {
    -    pub fn init(&mut self, l: PhysPageNum, r: PhysPageNum) {
    -        self.current = l.0;
    -        self.end = r.0;
    -        println!("last {} Physical Frames.", self.end - self.current);
    -    }
    -}
    -impl FrameAllocator for StackFrameAllocator {
    -    fn new() -> Self {
    -        Self {
    -            current: 0,
    -            end: 0,
    -            recycled: Vec::new(),
    -        }
    -    }
    -    fn alloc(&mut self) -> Option<PhysPageNum> {
    -        if let Some(ppn) = self.recycled.pop() {
    -            Some(ppn.into())
    -        } else if self.current == self.end {
    -            None
    -        } else {
    -            self.current += 1;
    -            Some((self.current - 1).into())
    -        }
    -    }
    -    fn dealloc(&mut self, ppn: PhysPageNum) {
    -        let ppn = ppn.0;
    -        // validity check
    -        if ppn >= self.current || self.recycled.iter().any(|&v| v == ppn) {
    -            panic!("Frame ppn={:#x} has not been allocated!", ppn);
    -        }
    -        // recycle
    -        self.recycled.push(ppn);
    -    }
    -}
    -
    -type FrameAllocatorImpl = StackFrameAllocator;
    -
    -lazy_static! {
    -    pub static ref FRAME_ALLOCATOR: UPIntrFreeCell<FrameAllocatorImpl> =
    -        unsafe { UPIntrFreeCell::new(FrameAllocatorImpl::new()) };
    -}
    -
    -pub fn init_frame_allocator() {
    -    extern "C" {
    -        fn ekernel();
    -    }
    -    FRAME_ALLOCATOR.exclusive_access().init(
    -        PhysAddr::from(ekernel as usize).ceil(),
    -        PhysAddr::from(MEMORY_END).floor(),
    -    );
    -}
    -
    -pub fn frame_alloc() -> Option<FrameTracker> {
    -    FRAME_ALLOCATOR
    -        .exclusive_access()
    -        .alloc()
    -        .map(FrameTracker::new)
    -}
    -
    -pub fn frame_dealloc(ppn: PhysPageNum) {
    -    FRAME_ALLOCATOR.exclusive_access().dealloc(ppn);
    -}
    -
    -#[allow(unused)]
    -pub fn frame_allocator_test() {
    -    let mut v: Vec<FrameTracker> = Vec::new();
    -    for i in 0..5 {
    -        let frame = frame_alloc().unwrap();
    -        println!("{:?}", frame);
    -        v.push(frame);
    -    }
    -    v.clear();
    -    for i in 0..5 {
    -        let frame = frame_alloc().unwrap();
    -        println!("{:?}", frame);
    -        v.push(frame);
    -    }
    -    drop(v);
    -    println!("frame_allocator_test passed!");
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/mm/heap_allocator.rs.html b/public/main/src/os/mm/heap_allocator.rs.html deleted file mode 100644 index d2313840..00000000 --- a/public/main/src/os/mm/heap_allocator.rs.html +++ /dev/null @@ -1,96 +0,0 @@ -heap_allocator.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -
    use crate::config::KERNEL_HEAP_SIZE;
    -use buddy_system_allocator::LockedHeap;
    -
    -#[global_allocator]
    -static HEAP_ALLOCATOR: LockedHeap = LockedHeap::empty();
    -
    -#[alloc_error_handler]
    -pub fn handle_alloc_error(layout: core::alloc::Layout) -> ! {
    -    panic!("Heap allocation error, layout = {:?}", layout);
    -}
    -
    -static mut HEAP_SPACE: [u8; KERNEL_HEAP_SIZE] = [0; KERNEL_HEAP_SIZE];
    -
    -pub fn init_heap() {
    -    unsafe {
    -        HEAP_ALLOCATOR
    -            .lock()
    -            .init(HEAP_SPACE.as_ptr() as usize, KERNEL_HEAP_SIZE);
    -    }
    -}
    -
    -#[allow(unused)]
    -pub fn heap_test() {
    -    use alloc::boxed::Box;
    -    use alloc::vec::Vec;
    -    extern "C" {
    -        fn sbss();
    -        fn ebss();
    -    }
    -    let bss_range = sbss as usize..ebss as usize;
    -    let a = Box::new(5);
    -    assert_eq!(*a, 5);
    -    assert!(bss_range.contains(&(a.as_ref() as *const _ as usize)));
    -    drop(a);
    -    let mut v: Vec<usize> = Vec::new();
    -    for i in 0..500 {
    -        v.push(i);
    -    }
    -    for (i, val) in v.iter().take(500).enumerate() {
    -        assert_eq!(*val, i);
    -    }
    -    assert!(bss_range.contains(&(v.as_ptr() as usize)));
    -    drop(v);
    -    println!("heap_test passed!");
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/mm/memory_set.rs.html b/public/main/src/os/mm/memory_set.rs.html deleted file mode 100644 index 6abff934..00000000 --- a/public/main/src/os/mm/memory_set.rs.html +++ /dev/null @@ -1,746 +0,0 @@ -memory_set.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -129
    -130
    -131
    -132
    -133
    -134
    -135
    -136
    -137
    -138
    -139
    -140
    -141
    -142
    -143
    -144
    -145
    -146
    -147
    -148
    -149
    -150
    -151
    -152
    -153
    -154
    -155
    -156
    -157
    -158
    -159
    -160
    -161
    -162
    -163
    -164
    -165
    -166
    -167
    -168
    -169
    -170
    -171
    -172
    -173
    -174
    -175
    -176
    -177
    -178
    -179
    -180
    -181
    -182
    -183
    -184
    -185
    -186
    -187
    -188
    -189
    -190
    -191
    -192
    -193
    -194
    -195
    -196
    -197
    -198
    -199
    -200
    -201
    -202
    -203
    -204
    -205
    -206
    -207
    -208
    -209
    -210
    -211
    -212
    -213
    -214
    -215
    -216
    -217
    -218
    -219
    -220
    -221
    -222
    -223
    -224
    -225
    -226
    -227
    -228
    -229
    -230
    -231
    -232
    -233
    -234
    -235
    -236
    -237
    -238
    -239
    -240
    -241
    -242
    -243
    -244
    -245
    -246
    -247
    -248
    -249
    -250
    -251
    -252
    -253
    -254
    -255
    -256
    -257
    -258
    -259
    -260
    -261
    -262
    -263
    -264
    -265
    -266
    -267
    -268
    -269
    -270
    -271
    -272
    -273
    -274
    -275
    -276
    -277
    -278
    -279
    -280
    -281
    -282
    -283
    -284
    -285
    -286
    -287
    -288
    -289
    -290
    -291
    -292
    -293
    -294
    -295
    -296
    -297
    -298
    -299
    -300
    -301
    -302
    -303
    -304
    -305
    -306
    -307
    -308
    -309
    -310
    -311
    -312
    -313
    -314
    -315
    -316
    -317
    -318
    -319
    -320
    -321
    -322
    -323
    -324
    -325
    -326
    -327
    -328
    -329
    -330
    -331
    -332
    -333
    -334
    -335
    -336
    -337
    -338
    -339
    -340
    -341
    -342
    -343
    -344
    -345
    -346
    -347
    -348
    -349
    -350
    -351
    -352
    -353
    -354
    -355
    -356
    -357
    -358
    -359
    -360
    -361
    -362
    -363
    -364
    -365
    -366
    -367
    -368
    -369
    -370
    -
    use super::{frame_alloc, FrameTracker};
    -use super::{PTEFlags, PageTable, PageTableEntry};
    -use super::{PhysAddr, PhysPageNum, VirtAddr, VirtPageNum};
    -use super::{StepByOne, VPNRange};
    -use crate::config::{MEMORY_END, MMIO, PAGE_SIZE, TRAMPOLINE};
    -use crate::sync::UPIntrFreeCell;
    -use alloc::collections::BTreeMap;
    -use alloc::sync::Arc;
    -use alloc::vec::Vec;
    -use core::arch::asm;
    -use lazy_static::*;
    -use riscv::register::satp;
    -
    -extern "C" {
    -    fn stext();
    -    fn etext();
    -    fn srodata();
    -    fn erodata();
    -    fn sdata();
    -    fn edata();
    -    fn sbss_with_stack();
    -    fn ebss();
    -    fn ekernel();
    -    fn strampoline();
    -}
    -
    -lazy_static! {
    -    pub static ref KERNEL_SPACE: Arc<UPIntrFreeCell<MemorySet>> =
    -        Arc::new(unsafe { UPIntrFreeCell::new(MemorySet::new_kernel()) });
    -}
    -
    -pub fn kernel_token() -> usize {
    -    KERNEL_SPACE.exclusive_access().token()
    -}
    -
    -pub struct MemorySet {
    -    page_table: PageTable,
    -    areas: Vec<MapArea>,
    -}
    -
    -impl MemorySet {
    -    pub fn new_bare() -> Self {
    -        Self {
    -            page_table: PageTable::new(),
    -            areas: Vec::new(),
    -        }
    -    }
    -    pub fn token(&self) -> usize {
    -        self.page_table.token()
    -    }
    -    /// Assume that no conflicts.
    -    pub fn insert_framed_area(
    -        &mut self,
    -        start_va: VirtAddr,
    -        end_va: VirtAddr,
    -        permission: MapPermission,
    -    ) {
    -        self.push(
    -            MapArea::new(start_va, end_va, MapType::Framed, permission),
    -            None,
    -        );
    -    }
    -    pub fn remove_area_with_start_vpn(&mut self, start_vpn: VirtPageNum) {
    -        if let Some((idx, area)) = self
    -            .areas
    -            .iter_mut()
    -            .enumerate()
    -            .find(|(_, area)| area.vpn_range.get_start() == start_vpn)
    -        {
    -            area.unmap(&mut self.page_table);
    -            self.areas.remove(idx);
    -        }
    -    }
    -    fn push(&mut self, mut map_area: MapArea, data: Option<&[u8]>) {
    -        map_area.map(&mut self.page_table);
    -        if let Some(data) = data {
    -            map_area.copy_data(&mut self.page_table, data);
    -        }
    -        self.areas.push(map_area);
    -    }
    -    /// Mention that trampoline is not collected by areas.
    -    fn map_trampoline(&mut self) {
    -        self.page_table.map(
    -            VirtAddr::from(TRAMPOLINE).into(),
    -            PhysAddr::from(strampoline as usize).into(),
    -            PTEFlags::R | PTEFlags::X,
    -        );
    -    }
    -    /// Without kernel stacks.
    -    pub fn new_kernel() -> Self {
    -        let mut memory_set = Self::new_bare();
    -        // map trampoline
    -        memory_set.map_trampoline();
    -        // map kernel sections
    -        println!(".text [{:#x}, {:#x})", stext as usize, etext as usize);
    -        println!(".rodata [{:#x}, {:#x})", srodata as usize, erodata as usize);
    -        println!(".data [{:#x}, {:#x})", sdata as usize, edata as usize);
    -        println!(
    -            ".bss [{:#x}, {:#x})",
    -            sbss_with_stack as usize, ebss as usize
    -        );
    -        println!("mapping .text section");
    -        memory_set.push(
    -            MapArea::new(
    -                (stext as usize).into(),
    -                (etext as usize).into(),
    -                MapType::Identical,
    -                MapPermission::R | MapPermission::X,
    -            ),
    -            None,
    -        );
    -        println!("mapping .rodata section");
    -        memory_set.push(
    -            MapArea::new(
    -                (srodata as usize).into(),
    -                (erodata as usize).into(),
    -                MapType::Identical,
    -                MapPermission::R,
    -            ),
    -            None,
    -        );
    -        println!("mapping .data section");
    -        memory_set.push(
    -            MapArea::new(
    -                (sdata as usize).into(),
    -                (edata as usize).into(),
    -                MapType::Identical,
    -                MapPermission::R | MapPermission::W,
    -            ),
    -            None,
    -        );
    -        println!("mapping .bss section");
    -        memory_set.push(
    -            MapArea::new(
    -                (sbss_with_stack as usize).into(),
    -                (ebss as usize).into(),
    -                MapType::Identical,
    -                MapPermission::R | MapPermission::W,
    -            ),
    -            None,
    -        );
    -        println!("mapping physical memory");
    -        memory_set.push(
    -            MapArea::new(
    -                (ekernel as usize).into(),
    -                MEMORY_END.into(),
    -                MapType::Identical,
    -                MapPermission::R | MapPermission::W,
    -            ),
    -            None,
    -        );
    -        println!("mapping memory-mapped registers");
    -        for pair in MMIO {
    -            memory_set.push(
    -                MapArea::new(
    -                    (*pair).0.into(),
    -                    ((*pair).0 + (*pair).1).into(),
    -                    MapType::Identical,
    -                    MapPermission::R | MapPermission::W,
    -                ),
    -                None,
    -            );
    -        }
    -        memory_set
    -    }
    -    /// Include sections in elf and trampoline,
    -    /// also returns user_sp_base and entry point.
    -    pub fn from_elf(elf_data: &[u8]) -> (Self, usize, usize) {
    -        let mut memory_set = Self::new_bare();
    -        // map trampoline
    -        memory_set.map_trampoline();
    -        // map program headers of elf, with U flag
    -        let elf = xmas_elf::ElfFile::new(elf_data).unwrap();
    -        let elf_header = elf.header;
    -        let magic = elf_header.pt1.magic;
    -        assert_eq!(magic, [0x7f, 0x45, 0x4c, 0x46], "invalid elf!");
    -        let ph_count = elf_header.pt2.ph_count();
    -        let mut max_end_vpn = VirtPageNum(0);
    -        for i in 0..ph_count {
    -            let ph = elf.program_header(i).unwrap();
    -            if ph.get_type().unwrap() == xmas_elf::program::Type::Load {
    -                let start_va: VirtAddr = (ph.virtual_addr() as usize).into();
    -                let end_va: VirtAddr = ((ph.virtual_addr() + ph.mem_size()) as usize).into();
    -                let mut map_perm = MapPermission::U;
    -                let ph_flags = ph.flags();
    -                if ph_flags.is_read() {
    -                    map_perm |= MapPermission::R;
    -                }
    -                if ph_flags.is_write() {
    -                    map_perm |= MapPermission::W;
    -                }
    -                if ph_flags.is_execute() {
    -                    map_perm |= MapPermission::X;
    -                }
    -                let map_area = MapArea::new(start_va, end_va, MapType::Framed, map_perm);
    -                max_end_vpn = map_area.vpn_range.get_end();
    -                memory_set.push(
    -                    map_area,
    -                    Some(&elf.input[ph.offset() as usize..(ph.offset() + ph.file_size()) as usize]),
    -                );
    -            }
    -        }
    -        let max_end_va: VirtAddr = max_end_vpn.into();
    -        let mut user_stack_base: usize = max_end_va.into();
    -        user_stack_base += PAGE_SIZE;
    -        (
    -            memory_set,
    -            user_stack_base,
    -            elf.header.pt2.entry_point() as usize,
    -        )
    -    }
    -    pub fn from_existed_user(user_space: &MemorySet) -> MemorySet {
    -        let mut memory_set = Self::new_bare();
    -        // map trampoline
    -        memory_set.map_trampoline();
    -        // copy data sections/trap_context/user_stack
    -        for area in user_space.areas.iter() {
    -            let new_area = MapArea::from_another(area);
    -            memory_set.push(new_area, None);
    -            // copy data from another space
    -            for vpn in area.vpn_range {
    -                let src_ppn = user_space.translate(vpn).unwrap().ppn();
    -                let dst_ppn = memory_set.translate(vpn).unwrap().ppn();
    -                dst_ppn
    -                    .get_bytes_array()
    -                    .copy_from_slice(src_ppn.get_bytes_array());
    -            }
    -        }
    -        memory_set
    -    }
    -    pub fn activate(&self) {
    -        let satp = self.page_table.token();
    -        unsafe {
    -            satp::write(satp);
    -            asm!("sfence.vma");
    -        }
    -    }
    -    pub fn translate(&self, vpn: VirtPageNum) -> Option<PageTableEntry> {
    -        self.page_table.translate(vpn)
    -    }
    -    pub fn recycle_data_pages(&mut self) {
    -        //*self = Self::new_bare();
    -        self.areas.clear();
    -    }
    -}
    -
    -pub struct MapArea {
    -    vpn_range: VPNRange,
    -    data_frames: BTreeMap<VirtPageNum, FrameTracker>,
    -    map_type: MapType,
    -    map_perm: MapPermission,
    -}
    -
    -impl MapArea {
    -    pub fn new(
    -        start_va: VirtAddr,
    -        end_va: VirtAddr,
    -        map_type: MapType,
    -        map_perm: MapPermission,
    -    ) -> Self {
    -        let start_vpn: VirtPageNum = start_va.floor();
    -        let end_vpn: VirtPageNum = end_va.ceil();
    -        Self {
    -            vpn_range: VPNRange::new(start_vpn, end_vpn),
    -            data_frames: BTreeMap::new(),
    -            map_type,
    -            map_perm,
    -        }
    -    }
    -    pub fn from_another(another: &MapArea) -> Self {
    -        Self {
    -            vpn_range: VPNRange::new(another.vpn_range.get_start(), another.vpn_range.get_end()),
    -            data_frames: BTreeMap::new(),
    -            map_type: another.map_type,
    -            map_perm: another.map_perm,
    -        }
    -    }
    -    pub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum) {
    -        let ppn: PhysPageNum;
    -        match self.map_type {
    -            MapType::Identical => {
    -                ppn = PhysPageNum(vpn.0);
    -            }
    -            MapType::Framed => {
    -                let frame = frame_alloc().unwrap();
    -                ppn = frame.ppn;
    -                self.data_frames.insert(vpn, frame);
    -            }
    -        }
    -        let pte_flags = PTEFlags::from_bits(self.map_perm.bits).unwrap();
    -        page_table.map(vpn, ppn, pte_flags);
    -    }
    -    pub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum) {
    -        if self.map_type == MapType::Framed {
    -            self.data_frames.remove(&vpn);
    -        }
    -        page_table.unmap(vpn);
    -    }
    -    pub fn map(&mut self, page_table: &mut PageTable) {
    -        for vpn in self.vpn_range {
    -            self.map_one(page_table, vpn);
    -        }
    -    }
    -    pub fn unmap(&mut self, page_table: &mut PageTable) {
    -        for vpn in self.vpn_range {
    -            self.unmap_one(page_table, vpn);
    -        }
    -    }
    -    /// data: start-aligned but maybe with shorter length
    -    /// assume that all frames were cleared before
    -    pub fn copy_data(&mut self, page_table: &mut PageTable, data: &[u8]) {
    -        assert_eq!(self.map_type, MapType::Framed);
    -        let mut start: usize = 0;
    -        let mut current_vpn = self.vpn_range.get_start();
    -        let len = data.len();
    -        loop {
    -            let src = &data[start..len.min(start + PAGE_SIZE)];
    -            let dst = &mut page_table
    -                .translate(current_vpn)
    -                .unwrap()
    -                .ppn()
    -                .get_bytes_array()[..src.len()];
    -            dst.copy_from_slice(src);
    -            start += PAGE_SIZE;
    -            if start >= len {
    -                break;
    -            }
    -            current_vpn.step();
    -        }
    -    }
    -}
    -
    -#[derive(Copy, Clone, PartialEq, Debug)]
    -pub enum MapType {
    -    Identical,
    -    Framed,
    -}
    -
    -bitflags! {
    -    pub struct MapPermission: u8 {
    -        const R = 1 << 1;
    -        const W = 1 << 2;
    -        const X = 1 << 3;
    -        const U = 1 << 4;
    -    }
    -}
    -
    -#[allow(unused)]
    -pub fn remap_test() {
    -    let mut kernel_space = KERNEL_SPACE.exclusive_access();
    -    let mid_text: VirtAddr = ((stext as usize + etext as usize) / 2).into();
    -    let mid_rodata: VirtAddr = ((srodata as usize + erodata as usize) / 2).into();
    -    let mid_data: VirtAddr = ((sdata as usize + edata as usize) / 2).into();
    -    assert!(!kernel_space
    -        .page_table
    -        .translate(mid_text.floor())
    -        .unwrap()
    -        .writable(),);
    -    assert!(!kernel_space
    -        .page_table
    -        .translate(mid_rodata.floor())
    -        .unwrap()
    -        .writable(),);
    -    assert!(!kernel_space
    -        .page_table
    -        .translate(mid_data.floor())
    -        .unwrap()
    -        .executable(),);
    -    println!("remap_test passed!");
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/mm/mod.rs.html b/public/main/src/os/mm/mod.rs.html deleted file mode 100644 index 3f24ee17..00000000 --- a/public/main/src/os/mm/mod.rs.html +++ /dev/null @@ -1,50 +0,0 @@ -mod.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -
    mod address;
    -mod frame_allocator;
    -mod heap_allocator;
    -mod memory_set;
    -mod page_table;
    -
    -use address::VPNRange;
    -pub use address::{PhysAddr, PhysPageNum, StepByOne, VirtAddr, VirtPageNum};
    -pub use frame_allocator::{frame_alloc, frame_dealloc, FrameTracker};
    -pub use memory_set::remap_test;
    -pub use memory_set::{kernel_token, MapPermission, MemorySet, KERNEL_SPACE};
    -use page_table::PTEFlags;
    -pub use page_table::{
    -    translated_byte_buffer, translated_ref, translated_refmut, translated_str, PageTable,
    -    PageTableEntry, UserBuffer, UserBufferIterator,
    -};
    -
    -pub fn init() {
    -    heap_allocator::init_heap();
    -    frame_allocator::init_frame_allocator();
    -    KERNEL_SPACE.exclusive_access().activate();
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/mm/page_table.rs.html b/public/main/src/os/mm/page_table.rs.html deleted file mode 100644 index da976c57..00000000 --- a/public/main/src/os/mm/page_table.rs.html +++ /dev/null @@ -1,504 +0,0 @@ -page_table.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -129
    -130
    -131
    -132
    -133
    -134
    -135
    -136
    -137
    -138
    -139
    -140
    -141
    -142
    -143
    -144
    -145
    -146
    -147
    -148
    -149
    -150
    -151
    -152
    -153
    -154
    -155
    -156
    -157
    -158
    -159
    -160
    -161
    -162
    -163
    -164
    -165
    -166
    -167
    -168
    -169
    -170
    -171
    -172
    -173
    -174
    -175
    -176
    -177
    -178
    -179
    -180
    -181
    -182
    -183
    -184
    -185
    -186
    -187
    -188
    -189
    -190
    -191
    -192
    -193
    -194
    -195
    -196
    -197
    -198
    -199
    -200
    -201
    -202
    -203
    -204
    -205
    -206
    -207
    -208
    -209
    -210
    -211
    -212
    -213
    -214
    -215
    -216
    -217
    -218
    -219
    -220
    -221
    -222
    -223
    -224
    -225
    -226
    -227
    -228
    -229
    -230
    -231
    -232
    -233
    -234
    -235
    -236
    -237
    -238
    -239
    -240
    -241
    -242
    -243
    -244
    -245
    -246
    -247
    -248
    -249
    -
    use super::{frame_alloc, FrameTracker, PhysAddr, PhysPageNum, StepByOne, VirtAddr, VirtPageNum};
    -use alloc::string::String;
    -use alloc::vec;
    -use alloc::vec::Vec;
    -use bitflags::*;
    -
    -bitflags! {
    -    pub struct PTEFlags: u8 {
    -        const V = 1 << 0;
    -        const R = 1 << 1;
    -        const W = 1 << 2;
    -        const X = 1 << 3;
    -        const U = 1 << 4;
    -        const G = 1 << 5;
    -        const A = 1 << 6;
    -        const D = 1 << 7;
    -    }
    -}
    -
    -#[derive(Copy, Clone)]
    -#[repr(C)]
    -pub struct PageTableEntry {
    -    pub bits: usize,
    -}
    -
    -impl PageTableEntry {
    -    pub fn new(ppn: PhysPageNum, flags: PTEFlags) -> Self {
    -        PageTableEntry {
    -            bits: ppn.0 << 10 | flags.bits as usize,
    -        }
    -    }
    -    pub fn empty() -> Self {
    -        PageTableEntry { bits: 0 }
    -    }
    -    pub fn ppn(&self) -> PhysPageNum {
    -        (self.bits >> 10 & ((1usize << 44) - 1)).into()
    -    }
    -    pub fn flags(&self) -> PTEFlags {
    -        PTEFlags::from_bits(self.bits as u8).unwrap()
    -    }
    -    pub fn is_valid(&self) -> bool {
    -        (self.flags() & PTEFlags::V) != PTEFlags::empty()
    -    }
    -    pub fn readable(&self) -> bool {
    -        (self.flags() & PTEFlags::R) != PTEFlags::empty()
    -    }
    -    pub fn writable(&self) -> bool {
    -        (self.flags() & PTEFlags::W) != PTEFlags::empty()
    -    }
    -    pub fn executable(&self) -> bool {
    -        (self.flags() & PTEFlags::X) != PTEFlags::empty()
    -    }
    -}
    -
    -pub struct PageTable {
    -    root_ppn: PhysPageNum,
    -    frames: Vec<FrameTracker>,
    -}
    -
    -/// Assume that it won't oom when creating/mapping.
    -impl PageTable {
    -    pub fn new() -> Self {
    -        let frame = frame_alloc().unwrap();
    -        PageTable {
    -            root_ppn: frame.ppn,
    -            frames: vec![frame],
    -        }
    -    }
    -    /// Temporarily used to get arguments from user space.
    -    pub fn from_token(satp: usize) -> Self {
    -        Self {
    -            root_ppn: PhysPageNum::from(satp & ((1usize << 44) - 1)),
    -            frames: Vec::new(),
    -        }
    -    }
    -    fn find_pte_create(&mut self, vpn: VirtPageNum) -> Option<&mut PageTableEntry> {
    -        let idxs = vpn.indexes();
    -        let mut ppn = self.root_ppn;
    -        let mut result: Option<&mut PageTableEntry> = None;
    -        for (i, idx) in idxs.iter().enumerate() {
    -            let pte = &mut ppn.get_pte_array()[*idx];
    -            if i == 2 {
    -                result = Some(pte);
    -                break;
    -            }
    -            if !pte.is_valid() {
    -                let frame = frame_alloc().unwrap();
    -                *pte = PageTableEntry::new(frame.ppn, PTEFlags::V);
    -                self.frames.push(frame);
    -            }
    -            ppn = pte.ppn();
    -        }
    -        result
    -    }
    -    fn find_pte(&self, vpn: VirtPageNum) -> Option<&mut PageTableEntry> {
    -        let idxs = vpn.indexes();
    -        let mut ppn = self.root_ppn;
    -        let mut result: Option<&mut PageTableEntry> = None;
    -        for (i, idx) in idxs.iter().enumerate() {
    -            let pte = &mut ppn.get_pte_array()[*idx];
    -            if i == 2 {
    -                result = Some(pte);
    -                break;
    -            }
    -            if !pte.is_valid() {
    -                return None;
    -            }
    -            ppn = pte.ppn();
    -        }
    -        result
    -    }
    -    #[allow(unused)]
    -    pub fn map(&mut self, vpn: VirtPageNum, ppn: PhysPageNum, flags: PTEFlags) {
    -        let pte = self.find_pte_create(vpn).unwrap();
    -        assert!(!pte.is_valid(), "vpn {:?} is mapped before mapping", vpn);
    -        *pte = PageTableEntry::new(ppn, flags | PTEFlags::V);
    -    }
    -    #[allow(unused)]
    -    pub fn unmap(&mut self, vpn: VirtPageNum) {
    -        let pte = self.find_pte(vpn).unwrap();
    -        assert!(pte.is_valid(), "vpn {:?} is invalid before unmapping", vpn);
    -        *pte = PageTableEntry::empty();
    -    }
    -    pub fn translate(&self, vpn: VirtPageNum) -> Option<PageTableEntry> {
    -        self.find_pte(vpn).map(|pte| *pte)
    -    }
    -    pub fn translate_va(&self, va: VirtAddr) -> Option<PhysAddr> {
    -        self.find_pte(va.clone().floor()).map(|pte| {
    -            let aligned_pa: PhysAddr = pte.ppn().into();
    -            let offset = va.page_offset();
    -            let aligned_pa_usize: usize = aligned_pa.into();
    -            (aligned_pa_usize + offset).into()
    -        })
    -    }
    -    pub fn token(&self) -> usize {
    -        8usize << 60 | self.root_ppn.0
    -    }
    -}
    -
    -pub fn translated_byte_buffer(token: usize, ptr: *const u8, len: usize) -> Vec<&'static mut [u8]> {
    -    let page_table = PageTable::from_token(token);
    -    let mut start = ptr as usize;
    -    let end = start + len;
    -    let mut v = Vec::new();
    -    while start < end {
    -        let start_va = VirtAddr::from(start);
    -        let mut vpn = start_va.floor();
    -        let ppn = page_table.translate(vpn).unwrap().ppn();
    -        vpn.step();
    -        let mut end_va: VirtAddr = vpn.into();
    -        end_va = end_va.min(VirtAddr::from(end));
    -        if end_va.page_offset() == 0 {
    -            v.push(&mut ppn.get_bytes_array()[start_va.page_offset()..]);
    -        } else {
    -            v.push(&mut ppn.get_bytes_array()[start_va.page_offset()..end_va.page_offset()]);
    -        }
    -        start = end_va.into();
    -    }
    -    v
    -}
    -
    -/// Load a string from other address spaces into kernel space without an end `\0`.
    -pub fn translated_str(token: usize, ptr: *const u8) -> String {
    -    let page_table = PageTable::from_token(token);
    -    let mut string = String::new();
    -    let mut va = ptr as usize;
    -    loop {
    -        let ch: u8 = *(page_table
    -            .translate_va(VirtAddr::from(va))
    -            .unwrap()
    -            .get_mut());
    -        if ch == 0 {
    -            break;
    -        }
    -        string.push(ch as char);
    -        va += 1;
    -    }
    -    string
    -}
    -
    -pub fn translated_ref<T>(token: usize, ptr: *const T) -> &'static T {
    -    let page_table = PageTable::from_token(token);
    -    page_table
    -        .translate_va(VirtAddr::from(ptr as usize))
    -        .unwrap()
    -        .get_ref()
    -}
    -
    -pub fn translated_refmut<T>(token: usize, ptr: *mut T) -> &'static mut T {
    -    let page_table = PageTable::from_token(token);
    -    let va = ptr as usize;
    -    page_table
    -        .translate_va(VirtAddr::from(va))
    -        .unwrap()
    -        .get_mut()
    -}
    -
    -pub struct UserBuffer {
    -    pub buffers: Vec<&'static mut [u8]>,
    -}
    -
    -impl UserBuffer {
    -    pub fn new(buffers: Vec<&'static mut [u8]>) -> Self {
    -        Self { buffers }
    -    }
    -    pub fn len(&self) -> usize {
    -        let mut total: usize = 0;
    -        for b in self.buffers.iter() {
    -            total += b.len();
    -        }
    -        total
    -    }
    -}
    -
    -impl IntoIterator for UserBuffer {
    -    type Item = *mut u8;
    -    type IntoIter = UserBufferIterator;
    -    fn into_iter(self) -> Self::IntoIter {
    -        UserBufferIterator {
    -            buffers: self.buffers,
    -            current_buffer: 0,
    -            current_idx: 0,
    -        }
    -    }
    -}
    -
    -pub struct UserBufferIterator {
    -    buffers: Vec<&'static mut [u8]>,
    -    current_buffer: usize,
    -    current_idx: usize,
    -}
    -
    -impl Iterator for UserBufferIterator {
    -    type Item = *mut u8;
    -    fn next(&mut self) -> Option<Self::Item> {
    -        if self.current_buffer >= self.buffers.len() {
    -            None
    -        } else {
    -            let r = &mut self.buffers[self.current_buffer][self.current_idx] as *mut _;
    -            if self.current_idx + 1 == self.buffers[self.current_buffer].len() {
    -                self.current_idx = 0;
    -                self.current_buffer += 1;
    -            } else {
    -                self.current_idx += 1;
    -            }
    -            Some(r)
    -        }
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/sbi.rs.html b/public/main/src/os/sbi.rs.html deleted file mode 100644 index 5ec9eb34..00000000 --- a/public/main/src/os/sbi.rs.html +++ /dev/null @@ -1,96 +0,0 @@ -sbi.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -
    #![allow(unused)]
    -
    -use core::arch::asm;
    -
    -const SBI_SET_TIMER: usize = 0;
    -const SBI_CONSOLE_PUTCHAR: usize = 1;
    -const SBI_CONSOLE_GETCHAR: usize = 2;
    -const SBI_CLEAR_IPI: usize = 3;
    -const SBI_SEND_IPI: usize = 4;
    -const SBI_REMOTE_FENCE_I: usize = 5;
    -const SBI_REMOTE_SFENCE_VMA: usize = 6;
    -const SBI_REMOTE_SFENCE_VMA_ASID: usize = 7;
    -const SBI_SHUTDOWN: usize = 8;
    -
    -#[inline(always)]
    -fn sbi_call(which: usize, arg0: usize, arg1: usize, arg2: usize) -> usize {
    -    let mut ret;
    -    unsafe {
    -        core::arch::asm!(
    -            "ecall",
    -            inlateout("x10") arg0 => ret,
    -            in("x11") arg1,
    -            in("x12") arg2,
    -            in("x17") which,
    -        );
    -    }
    -    ret
    -}
    -
    -pub fn set_timer(timer: usize) {
    -    sbi_call(SBI_SET_TIMER, timer, 0, 0);
    -}
    -
    -pub fn console_putchar(c: usize) {
    -    sbi_call(SBI_CONSOLE_PUTCHAR, c, 0, 0);
    -}
    -
    -pub fn console_getchar() -> usize {
    -    sbi_call(SBI_CONSOLE_GETCHAR, 0, 0, 0)
    -}
    -
    -pub fn shutdown() -> ! {
    -    sbi_call(SBI_SHUTDOWN, 0, 0, 0);
    -    panic!("It should shutdown!");
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/sync/condvar.rs.html b/public/main/src/os/sync/condvar.rs.html deleted file mode 100644 index 07ebb0e3..00000000 --- a/public/main/src/os/sync/condvar.rs.html +++ /dev/null @@ -1,116 +0,0 @@ -condvar.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -
    use crate::sync::{Mutex, UPIntrFreeCell};
    -use crate::task::{add_task, block_current_task, block_current_and_run_next, current_task, TaskControlBlock, TaskContext};
    -use alloc::{collections::VecDeque, sync::Arc};
    -
    -pub struct Condvar {
    -    pub inner: UPIntrFreeCell<CondvarInner>,
    -}
    -
    -pub struct CondvarInner {
    -    pub wait_queue: VecDeque<Arc<TaskControlBlock>>,
    -}
    -
    -impl Condvar {
    -    pub fn new() -> Self {
    -        Self {
    -            inner: unsafe {
    -                UPIntrFreeCell::new(CondvarInner {
    -                    wait_queue: VecDeque::new(),
    -                })
    -            },
    -        }
    -    }
    -
    -    pub fn signal(&self) {
    -        let mut inner = self.inner.exclusive_access();
    -        if let Some(task) = inner.wait_queue.pop_front() {
    -            add_task(task);
    -        }
    -    }
    -
    -    /*
    -    pub fn wait(&self) {
    -        let mut inner = self.inner.exclusive_access();
    -        inner.wait_queue.push_back(current_task().unwrap());
    -        drop(inner);
    -        block_current_and_run_next();
    -    }
    -    */
    -
    -    pub fn wait_no_sched(&self) -> *mut TaskContext {
    -        self.inner.exclusive_session(|inner| {
    -            inner.wait_queue.push_back(current_task().unwrap());
    -        });
    -        block_current_task()
    -    }
    -
    -    pub fn wait_with_mutex(&self, mutex: Arc<dyn Mutex>) {
    -        mutex.unlock();
    -        self.inner.exclusive_session(|inner| {
    -            inner.wait_queue.push_back(current_task().unwrap());
    -        });
    -        block_current_and_run_next();
    -        mutex.lock();
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/sync/mod.rs.html b/public/main/src/os/sync/mod.rs.html deleted file mode 100644 index e265a3f8..00000000 --- a/public/main/src/os/sync/mod.rs.html +++ /dev/null @@ -1,24 +0,0 @@ -mod.rs - source -
    1
    -2
    -3
    -4
    -5
    -6
    -7
    -8
    -9
    -
    mod condvar;
    -mod mutex;
    -mod semaphore;
    -mod up;
    -
    -pub use condvar::Condvar;
    -pub use mutex::{Mutex, MutexBlocking, MutexSpin};
    -pub use semaphore::Semaphore;
    -pub use up::{UPIntrFreeCell, UPIntrRefMut};
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/sync/mutex.rs.html b/public/main/src/os/sync/mutex.rs.html deleted file mode 100644 index 5f35adda..00000000 --- a/public/main/src/os/sync/mutex.rs.html +++ /dev/null @@ -1,182 +0,0 @@ -mutex.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -66
    -67
    -68
    -69
    -70
    -71
    -72
    -73
    -74
    -75
    -76
    -77
    -78
    -79
    -80
    -81
    -82
    -83
    -84
    -85
    -86
    -87
    -88
    -
    use super::UPIntrFreeCell;
    -use crate::task::TaskControlBlock;
    -use crate::task::{add_task, current_task};
    -use crate::task::{block_current_and_run_next, suspend_current_and_run_next};
    -use alloc::{collections::VecDeque, sync::Arc};
    -
    -pub trait Mutex: Sync + Send {
    -    fn lock(&self);
    -    fn unlock(&self);
    -}
    -
    -pub struct MutexSpin {
    -    locked: UPIntrFreeCell<bool>,
    -}
    -
    -impl MutexSpin {
    -    pub fn new() -> Self {
    -        Self {
    -            locked: unsafe { UPIntrFreeCell::new(false) },
    -        }
    -    }
    -}
    -
    -impl Mutex for MutexSpin {
    -    fn lock(&self) {
    -        loop {
    -            let mut locked = self.locked.exclusive_access();
    -            if *locked {
    -                drop(locked);
    -                suspend_current_and_run_next();
    -                continue;
    -            } else {
    -                *locked = true;
    -                return;
    -            }
    -        }
    -    }
    -
    -    fn unlock(&self) {
    -        let mut locked = self.locked.exclusive_access();
    -        *locked = false;
    -    }
    -}
    -
    -pub struct MutexBlocking {
    -    inner: UPIntrFreeCell<MutexBlockingInner>,
    -}
    -
    -pub struct MutexBlockingInner {
    -    locked: bool,
    -    wait_queue: VecDeque<Arc<TaskControlBlock>>,
    -}
    -
    -impl MutexBlocking {
    -    pub fn new() -> Self {
    -        Self {
    -            inner: unsafe {
    -                UPIntrFreeCell::new(MutexBlockingInner {
    -                    locked: false,
    -                    wait_queue: VecDeque::new(),
    -                })
    -            },
    -        }
    -    }
    -}
    -
    -impl Mutex for MutexBlocking {
    -    fn lock(&self) {
    -        let mut mutex_inner = self.inner.exclusive_access();
    -        if mutex_inner.locked {
    -            mutex_inner.wait_queue.push_back(current_task().unwrap());
    -            drop(mutex_inner);
    -            block_current_and_run_next();
    -        } else {
    -            mutex_inner.locked = true;
    -        }
    -    }
    -
    -    fn unlock(&self) {
    -        let mut mutex_inner = self.inner.exclusive_access();
    -        assert!(mutex_inner.locked);
    -        if let Some(waking_task) = mutex_inner.wait_queue.pop_front() {
    -            add_task(waking_task);
    -        } else {
    -            mutex_inner.locked = false;
    -        }
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/sync/semaphore.rs.html b/public/main/src/os/sync/semaphore.rs.html deleted file mode 100644 index 71a9239d..00000000 --- a/public/main/src/os/sync/semaphore.rs.html +++ /dev/null @@ -1,96 +0,0 @@ -semaphore.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -
    use crate::sync::UPIntrFreeCell;
    -use crate::task::{add_task, block_current_and_run_next, current_task, TaskControlBlock};
    -use alloc::{collections::VecDeque, sync::Arc};
    -
    -pub struct Semaphore {
    -    pub inner: UPIntrFreeCell<SemaphoreInner>,
    -}
    -
    -pub struct SemaphoreInner {
    -    pub count: isize,
    -    pub wait_queue: VecDeque<Arc<TaskControlBlock>>,
    -}
    -
    -impl Semaphore {
    -    pub fn new(res_count: usize) -> Self {
    -        Self {
    -            inner: unsafe {
    -                UPIntrFreeCell::new(SemaphoreInner {
    -                    count: res_count as isize,
    -                    wait_queue: VecDeque::new(),
    -                })
    -            },
    -        }
    -    }
    -
    -    pub fn up(&self) {
    -        let mut inner = self.inner.exclusive_access();
    -        inner.count += 1;
    -        if inner.count <= 0 {
    -            if let Some(task) = inner.wait_queue.pop_front() {
    -                add_task(task);
    -            }
    -        }
    -    }
    -
    -    pub fn down(&self) {
    -        let mut inner = self.inner.exclusive_access();
    -        inner.count -= 1;
    -        if inner.count < 0 {
    -            inner.wait_queue.push_back(current_task().unwrap());
    -            drop(inner);
    -            block_current_and_run_next();
    -        }
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/sync/up.rs.html b/public/main/src/os/sync/up.rs.html deleted file mode 100644 index 89047359..00000000 --- a/public/main/src/os/sync/up.rs.html +++ /dev/null @@ -1,274 +0,0 @@ -up.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -129
    -130
    -131
    -132
    -133
    -134
    -
    use core::cell::{RefCell, RefMut, UnsafeCell};
    -use core::ops::{Deref, DerefMut};
    -use riscv::register::sstatus;
    -use lazy_static::*;
    -
    -/*
    -/// Wrap a static data structure inside it so that we are
    -/// able to access it without any `unsafe`.
    -///
    -/// We should only use it in uniprocessor.
    -///
    -/// In order to get mutable reference of inner data, call
    -/// `exclusive_access`.
    -pub struct UPSafeCell<T> {
    -    /// inner data
    -    inner: RefCell<T>,
    -}
    -
    -unsafe impl<T> Sync for UPSafeCell<T> {}
    -
    -impl<T> UPSafeCell<T> {
    -    /// User is responsible to guarantee that inner struct is only used in
    -    /// uniprocessor.
    -    pub unsafe fn new(value: T) -> Self {
    -        Self {
    -            inner: RefCell::new(value),
    -        }
    -    }
    -    /// Panic if the data has been borrowed.
    -    pub fn exclusive_access(&self) -> RefMut<'_, T> {
    -        self.inner.borrow_mut()
    -    }
    -}
    -*/
    -
    -pub struct UPSafeCellRaw<T> {
    -    inner: UnsafeCell<T>,
    -}
    -
    -unsafe impl<T> Sync for UPSafeCellRaw<T> {}
    -
    -impl<T> UPSafeCellRaw<T> {
    -    pub unsafe fn new(value: T) -> Self {
    -        Self {
    -            inner: UnsafeCell::new(value),
    -        }
    -    }
    -    pub fn get_mut(&self) -> &mut T {
    -        unsafe { &mut (*self.inner.get()) }
    -    }
    -}
    -
    -pub struct IntrMaskingInfo {
    -    nested_level: usize,
    -    sie_before_masking: bool,
    -}
    -
    -lazy_static! {
    -    static ref INTR_MASKING_INFO: UPSafeCellRaw<IntrMaskingInfo> = unsafe {
    -        UPSafeCellRaw::new(IntrMaskingInfo::new()) 
    -    };
    -}
    -
    -impl IntrMaskingInfo {
    -    pub fn new() -> Self {
    -        Self {
    -            nested_level: 0,
    -            sie_before_masking: false,
    -        }
    -    }
    -
    -    pub fn enter(&mut self) {
    -        let sie = sstatus::read().sie();
    -        unsafe { sstatus::clear_sie(); }
    -        if self.nested_level == 0 {
    -            self.sie_before_masking = sie;
    -        }
    -        self.nested_level += 1;
    -    }
    -
    -    pub fn exit(&mut self) {
    -        self.nested_level -= 1;
    -        if self.nested_level == 0 && self.sie_before_masking {
    -            unsafe { sstatus::set_sie(); }            
    -        }
    -    }
    -}
    -
    -pub struct UPIntrFreeCell<T> {
    -    /// inner data
    -    inner: RefCell<T>,
    -}
    -
    -unsafe impl<T> Sync for UPIntrFreeCell<T> {}
    -
    -pub struct UPIntrRefMut<'a, T>(Option<RefMut<'a, T>>);
    -
    -impl<T> UPIntrFreeCell<T> {
    -    pub unsafe fn new(value: T) -> Self {
    -        Self {
    -            inner: RefCell::new(value),
    -        }
    -    }
    -    /// Panic if the data has been borrowed.
    -    pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T> {
    -        INTR_MASKING_INFO.get_mut().enter();
    -        UPIntrRefMut(Some(self.inner.borrow_mut()))
    -    }
    -
    -    pub fn exclusive_session<F, V>(&self, f: F) -> V where F: FnOnce(&mut T) -> V {
    -        let mut inner = self.exclusive_access();
    -        f(inner.deref_mut())
    -    }
    -}
    -
    -impl<'a, T> Drop for UPIntrRefMut<'a, T> {
    -    fn drop(&mut self) {
    -        self.0 = None;
    -        INTR_MASKING_INFO.get_mut().exit();
    -    }
    -}
    -
    -impl<'a, T> Deref for UPIntrRefMut<'a, T> {
    -    type Target = T;
    -    fn deref(&self) -> &Self::Target {
    -        self.0.as_ref().unwrap().deref()
    -    }
    -}
    -impl<'a, T> DerefMut for UPIntrRefMut<'a, T> {
    -    fn deref_mut(&mut self) -> &mut Self::Target {
    -        self.0.as_mut().unwrap().deref_mut()
    -    }
    -}
    -
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/syscall/fs.rs.html b/public/main/src/os/syscall/fs.rs.html deleted file mode 100644 index 573d2081..00000000 --- a/public/main/src/os/syscall/fs.rs.html +++ /dev/null @@ -1,204 +0,0 @@ -fs.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -66
    -67
    -68
    -69
    -70
    -71
    -72
    -73
    -74
    -75
    -76
    -77
    -78
    -79
    -80
    -81
    -82
    -83
    -84
    -85
    -86
    -87
    -88
    -89
    -90
    -91
    -92
    -93
    -94
    -95
    -96
    -97
    -98
    -99
    -
    use crate::fs::{make_pipe, open_file, OpenFlags};
    -use crate::mm::{translated_byte_buffer, translated_refmut, translated_str, UserBuffer};
    -use crate::task::{current_process, current_user_token};
    -use alloc::sync::Arc;
    -
    -pub fn sys_write(fd: usize, buf: *const u8, len: usize) -> isize {
    -    let token = current_user_token();
    -    let process = current_process();
    -    let inner = process.inner_exclusive_access();
    -    if fd >= inner.fd_table.len() {
    -        return -1;
    -    }
    -    if let Some(file) = &inner.fd_table[fd] {
    -        if !file.writable() {
    -            return -1;
    -        }
    -        let file = file.clone();
    -        // release current task TCB manually to avoid multi-borrow
    -        drop(inner);
    -        file.write(UserBuffer::new(translated_byte_buffer(token, buf, len))) as isize
    -    } else {
    -        -1
    -    }
    -}
    -
    -pub fn sys_read(fd: usize, buf: *const u8, len: usize) -> isize {
    -    let token = current_user_token();
    -    let process = current_process();
    -    let inner = process.inner_exclusive_access();
    -    if fd >= inner.fd_table.len() {
    -        return -1;
    -    }
    -    if let Some(file) = &inner.fd_table[fd] {
    -        let file = file.clone();
    -        if !file.readable() {
    -            return -1;
    -        }
    -        // release current task TCB manually to avoid multi-borrow
    -        drop(inner);
    -        file.read(UserBuffer::new(translated_byte_buffer(token, buf, len))) as isize
    -    } else {
    -        -1
    -    }
    -}
    -
    -pub fn sys_open(path: *const u8, flags: u32) -> isize {
    -    let process = current_process();
    -    let token = current_user_token();
    -    let path = translated_str(token, path);
    -    if let Some(inode) = open_file(path.as_str(), OpenFlags::from_bits(flags).unwrap()) {
    -        let mut inner = process.inner_exclusive_access();
    -        let fd = inner.alloc_fd();
    -        inner.fd_table[fd] = Some(inode);
    -        fd as isize
    -    } else {
    -        -1
    -    }
    -}
    -
    -pub fn sys_close(fd: usize) -> isize {
    -    let process = current_process();
    -    let mut inner = process.inner_exclusive_access();
    -    if fd >= inner.fd_table.len() {
    -        return -1;
    -    }
    -    if inner.fd_table[fd].is_none() {
    -        return -1;
    -    }
    -    inner.fd_table[fd].take();
    -    0
    -}
    -
    -pub fn sys_pipe(pipe: *mut usize) -> isize {
    -    let process = current_process();
    -    let token = current_user_token();
    -    let mut inner = process.inner_exclusive_access();
    -    let (pipe_read, pipe_write) = make_pipe();
    -    let read_fd = inner.alloc_fd();
    -    inner.fd_table[read_fd] = Some(pipe_read);
    -    let write_fd = inner.alloc_fd();
    -    inner.fd_table[write_fd] = Some(pipe_write);
    -    *translated_refmut(token, pipe) = read_fd;
    -    *translated_refmut(token, unsafe { pipe.add(1) }) = write_fd;
    -    0
    -}
    -
    -pub fn sys_dup(fd: usize) -> isize {
    -    let process = current_process();
    -    let mut inner = process.inner_exclusive_access();
    -    if fd >= inner.fd_table.len() {
    -        return -1;
    -    }
    -    if inner.fd_table[fd].is_none() {
    -        return -1;
    -    }
    -    let new_fd = inner.alloc_fd();
    -    inner.fd_table[new_fd] = Some(Arc::clone(inner.fd_table[fd].as_ref().unwrap()));
    -    new_fd as isize
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/syscall/mod.rs.html b/public/main/src/os/syscall/mod.rs.html deleted file mode 100644 index 2139c1bb..00000000 --- a/public/main/src/os/syscall/mod.rs.html +++ /dev/null @@ -1,146 +0,0 @@ -mod.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -66
    -67
    -68
    -69
    -70
    -
    const SYSCALL_DUP: usize = 24;
    -const SYSCALL_OPEN: usize = 56;
    -const SYSCALL_CLOSE: usize = 57;
    -const SYSCALL_PIPE: usize = 59;
    -const SYSCALL_READ: usize = 63;
    -const SYSCALL_WRITE: usize = 64;
    -const SYSCALL_EXIT: usize = 93;
    -const SYSCALL_SLEEP: usize = 101;
    -const SYSCALL_YIELD: usize = 124;
    -const SYSCALL_KILL: usize = 129;
    -const SYSCALL_GET_TIME: usize = 169;
    -const SYSCALL_GETPID: usize = 172;
    -const SYSCALL_FORK: usize = 220;
    -const SYSCALL_EXEC: usize = 221;
    -const SYSCALL_WAITPID: usize = 260;
    -const SYSCALL_THREAD_CREATE: usize = 1000;
    -const SYSCALL_GETTID: usize = 1001;
    -const SYSCALL_WAITTID: usize = 1002;
    -const SYSCALL_MUTEX_CREATE: usize = 1010;
    -const SYSCALL_MUTEX_LOCK: usize = 1011;
    -const SYSCALL_MUTEX_UNLOCK: usize = 1012;
    -const SYSCALL_SEMAPHORE_CREATE: usize = 1020;
    -const SYSCALL_SEMAPHORE_UP: usize = 1021;
    -const SYSCALL_SEMAPHORE_DOWN: usize = 1022;
    -const SYSCALL_CONDVAR_CREATE: usize = 1030;
    -const SYSCALL_CONDVAR_SIGNAL: usize = 1031;
    -const SYSCALL_CONDVAR_WAIT: usize = 1032;
    -
    -mod fs;
    -mod process;
    -mod sync;
    -mod thread;
    -
    -use fs::*;
    -use process::*;
    -use sync::*;
    -use thread::*;
    -
    -pub fn syscall(syscall_id: usize, args: [usize; 3]) -> isize {
    -    match syscall_id {
    -        SYSCALL_DUP => sys_dup(args[0]),
    -        SYSCALL_OPEN => sys_open(args[0] as *const u8, args[1] as u32),
    -        SYSCALL_CLOSE => sys_close(args[0]),
    -        SYSCALL_PIPE => sys_pipe(args[0] as *mut usize),
    -        SYSCALL_READ => sys_read(args[0], args[1] as *const u8, args[2]),
    -        SYSCALL_WRITE => sys_write(args[0], args[1] as *const u8, args[2]),
    -        SYSCALL_EXIT => sys_exit(args[0] as i32),
    -        SYSCALL_SLEEP => sys_sleep(args[0]),
    -        SYSCALL_YIELD => sys_yield(),
    -        SYSCALL_KILL => sys_kill(args[0], args[1] as u32),
    -        SYSCALL_GET_TIME => sys_get_time(),
    -        SYSCALL_GETPID => sys_getpid(),
    -        SYSCALL_FORK => sys_fork(),
    -        SYSCALL_EXEC => sys_exec(args[0] as *const u8, args[1] as *const usize),
    -        SYSCALL_WAITPID => sys_waitpid(args[0] as isize, args[1] as *mut i32),
    -        SYSCALL_THREAD_CREATE => sys_thread_create(args[0], args[1]),
    -        SYSCALL_GETTID => sys_gettid(),
    -        SYSCALL_WAITTID => sys_waittid(args[0]) as isize,
    -        SYSCALL_MUTEX_CREATE => sys_mutex_create(args[0] == 1),
    -        SYSCALL_MUTEX_LOCK => sys_mutex_lock(args[0]),
    -        SYSCALL_MUTEX_UNLOCK => sys_mutex_unlock(args[0]),
    -        SYSCALL_SEMAPHORE_CREATE => sys_semaphore_create(args[0]),
    -        SYSCALL_SEMAPHORE_UP => sys_semaphore_up(args[0]),
    -        SYSCALL_SEMAPHORE_DOWN => sys_semaphore_down(args[0]),
    -        SYSCALL_CONDVAR_CREATE => sys_condvar_create(args[0]),
    -        SYSCALL_CONDVAR_SIGNAL => sys_condvar_signal(args[0]),
    -        SYSCALL_CONDVAR_WAIT => sys_condvar_wait(args[0], args[1]),
    -        _ => panic!("Unsupported syscall_id: {}", syscall_id),
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/syscall/process.rs.html b/public/main/src/os/syscall/process.rs.html deleted file mode 100644 index 1c038f31..00000000 --- a/public/main/src/os/syscall/process.rs.html +++ /dev/null @@ -1,240 +0,0 @@ -process.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -
    use crate::fs::{open_file, OpenFlags};
    -use crate::mm::{translated_ref, translated_refmut, translated_str};
    -use crate::task::{
    -    current_process, current_task, current_user_token, exit_current_and_run_next, pid2process,
    -    suspend_current_and_run_next, SignalFlags,
    -};
    -use crate::timer::get_time_ms;
    -use alloc::string::String;
    -use alloc::sync::Arc;
    -use alloc::vec::Vec;
    -
    -pub fn sys_exit(exit_code: i32) -> ! {
    -    exit_current_and_run_next(exit_code);
    -    panic!("Unreachable in sys_exit!");
    -}
    -
    -pub fn sys_yield() -> isize {
    -    suspend_current_and_run_next();
    -    0
    -}
    -
    -pub fn sys_get_time() -> isize {
    -    get_time_ms() as isize
    -}
    -
    -pub fn sys_getpid() -> isize {
    -    current_task().unwrap().process.upgrade().unwrap().getpid() as isize
    -}
    -
    -pub fn sys_fork() -> isize {
    -    let current_process = current_process();
    -    let new_process = current_process.fork();
    -    let new_pid = new_process.getpid();
    -    // modify trap context of new_task, because it returns immediately after switching
    -    let new_process_inner = new_process.inner_exclusive_access();
    -    let task = new_process_inner.tasks[0].as_ref().unwrap();
    -    let trap_cx = task.inner_exclusive_access().get_trap_cx();
    -    // we do not have to move to next instruction since we have done it before
    -    // for child process, fork returns 0
    -    trap_cx.x[10] = 0;
    -    new_pid as isize
    -}
    -
    -pub fn sys_exec(path: *const u8, mut args: *const usize) -> isize {
    -    let token = current_user_token();
    -    let path = translated_str(token, path);
    -    let mut args_vec: Vec<String> = Vec::new();
    -    loop {
    -        let arg_str_ptr = *translated_ref(token, args);
    -        if arg_str_ptr == 0 {
    -            break;
    -        }
    -        args_vec.push(translated_str(token, arg_str_ptr as *const u8));
    -        unsafe {
    -            args = args.add(1);
    -        }
    -    }
    -    if let Some(app_inode) = open_file(path.as_str(), OpenFlags::RDONLY) {
    -        let all_data = app_inode.read_all();
    -        let process = current_process();
    -        let argc = args_vec.len();
    -        process.exec(all_data.as_slice(), args_vec);
    -        // return argc because cx.x[10] will be covered with it later
    -        argc as isize
    -    } else {
    -        -1
    -    }
    -}
    -
    -/// If there is not a child process whose pid is same as given, return -1.
    -/// Else if there is a child process but it is still running, return -2.
    -pub fn sys_waitpid(pid: isize, exit_code_ptr: *mut i32) -> isize {
    -    let process = current_process();
    -    // find a child process
    -
    -    let mut inner = process.inner_exclusive_access();
    -    if !inner
    -        .children
    -        .iter()
    -        .any(|p| pid == -1 || pid as usize == p.getpid())
    -    {
    -        return -1;
    -        // ---- release current PCB
    -    }
    -    let pair = inner.children.iter().enumerate().find(|(_, p)| {
    -        // ++++ temporarily access child PCB exclusively
    -        p.inner_exclusive_access().is_zombie && (pid == -1 || pid as usize == p.getpid())
    -        // ++++ release child PCB
    -    });
    -    if let Some((idx, _)) = pair {
    -        let child = inner.children.remove(idx);
    -        // confirm that child will be deallocated after being removed from children list
    -        assert_eq!(Arc::strong_count(&child), 1);
    -        let found_pid = child.getpid();
    -        // ++++ temporarily access child PCB exclusively
    -        let exit_code = child.inner_exclusive_access().exit_code;
    -        // ++++ release child PCB
    -        *translated_refmut(inner.memory_set.token(), exit_code_ptr) = exit_code;
    -        found_pid as isize
    -    } else {
    -        -2
    -    }
    -    // ---- release current PCB automatically
    -}
    -
    -pub fn sys_kill(pid: usize, signal: u32) -> isize {
    -    if let Some(process) = pid2process(pid) {
    -        if let Some(flag) = SignalFlags::from_bits(signal) {
    -            process.inner_exclusive_access().signals |= flag;
    -            0
    -        } else {
    -            -1
    -        }
    -    } else {
    -        -1
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/syscall/sync.rs.html b/public/main/src/os/syscall/sync.rs.html deleted file mode 100644 index bf73dd0b..00000000 --- a/public/main/src/os/syscall/sync.rs.html +++ /dev/null @@ -1,274 +0,0 @@ -sync.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -129
    -130
    -131
    -132
    -133
    -134
    -
    use crate::sync::{Condvar, Mutex, MutexBlocking, MutexSpin, Semaphore};
    -use crate::task::{block_current_and_run_next, current_process, current_task};
    -use crate::timer::{add_timer, get_time_ms};
    -use alloc::sync::Arc;
    -
    -pub fn sys_sleep(ms: usize) -> isize {
    -    let expire_ms = get_time_ms() + ms;
    -    let task = current_task().unwrap();
    -    add_timer(expire_ms, task);
    -    block_current_and_run_next();
    -    0
    -}
    -
    -pub fn sys_mutex_create(blocking: bool) -> isize {
    -    let process = current_process();
    -    let mutex: Option<Arc<dyn Mutex>> = if !blocking {
    -        Some(Arc::new(MutexSpin::new()))
    -    } else {
    -        Some(Arc::new(MutexBlocking::new()))
    -    };
    -    let mut process_inner = process.inner_exclusive_access();
    -    if let Some(id) = process_inner
    -        .mutex_list
    -        .iter()
    -        .enumerate()
    -        .find(|(_, item)| item.is_none())
    -        .map(|(id, _)| id)
    -    {
    -        process_inner.mutex_list[id] = mutex;
    -        id as isize
    -    } else {
    -        process_inner.mutex_list.push(mutex);
    -        process_inner.mutex_list.len() as isize - 1
    -    }
    -}
    -
    -pub fn sys_mutex_lock(mutex_id: usize) -> isize {
    -    let process = current_process();
    -    let process_inner = process.inner_exclusive_access();
    -    let mutex = Arc::clone(process_inner.mutex_list[mutex_id].as_ref().unwrap());
    -    drop(process_inner);
    -    drop(process);
    -    mutex.lock();
    -    0
    -}
    -
    -pub fn sys_mutex_unlock(mutex_id: usize) -> isize {
    -    let process = current_process();
    -    let process_inner = process.inner_exclusive_access();
    -    let mutex = Arc::clone(process_inner.mutex_list[mutex_id].as_ref().unwrap());
    -    drop(process_inner);
    -    drop(process);
    -    mutex.unlock();
    -    0
    -}
    -
    -pub fn sys_semaphore_create(res_count: usize) -> isize {
    -    let process = current_process();
    -    let mut process_inner = process.inner_exclusive_access();
    -    let id = if let Some(id) = process_inner
    -        .semaphore_list
    -        .iter()
    -        .enumerate()
    -        .find(|(_, item)| item.is_none())
    -        .map(|(id, _)| id)
    -    {
    -        process_inner.semaphore_list[id] = Some(Arc::new(Semaphore::new(res_count)));
    -        id
    -    } else {
    -        process_inner
    -            .semaphore_list
    -            .push(Some(Arc::new(Semaphore::new(res_count))));
    -        process_inner.semaphore_list.len() - 1
    -    };
    -    id as isize
    -}
    -
    -pub fn sys_semaphore_up(sem_id: usize) -> isize {
    -    let process = current_process();
    -    let process_inner = process.inner_exclusive_access();
    -    let sem = Arc::clone(process_inner.semaphore_list[sem_id].as_ref().unwrap());
    -    drop(process_inner);
    -    sem.up();
    -    0
    -}
    -
    -pub fn sys_semaphore_down(sem_id: usize) -> isize {
    -    let process = current_process();
    -    let process_inner = process.inner_exclusive_access();
    -    let sem = Arc::clone(process_inner.semaphore_list[sem_id].as_ref().unwrap());
    -    drop(process_inner);
    -    sem.down();
    -    0
    -}
    -
    -pub fn sys_condvar_create(_arg: usize) -> isize {
    -    let process = current_process();
    -    let mut process_inner = process.inner_exclusive_access();
    -    let id = if let Some(id) = process_inner
    -        .condvar_list
    -        .iter()
    -        .enumerate()
    -        .find(|(_, item)| item.is_none())
    -        .map(|(id, _)| id)
    -    {
    -        process_inner.condvar_list[id] = Some(Arc::new(Condvar::new()));
    -        id
    -    } else {
    -        process_inner
    -            .condvar_list
    -            .push(Some(Arc::new(Condvar::new())));
    -        process_inner.condvar_list.len() - 1
    -    };
    -    id as isize
    -}
    -
    -pub fn sys_condvar_signal(condvar_id: usize) -> isize {
    -    let process = current_process();
    -    let process_inner = process.inner_exclusive_access();
    -    let condvar = Arc::clone(process_inner.condvar_list[condvar_id].as_ref().unwrap());
    -    drop(process_inner);
    -    condvar.signal();
    -    0
    -}
    -
    -pub fn sys_condvar_wait(condvar_id: usize, mutex_id: usize) -> isize {
    -    let process = current_process();
    -    let process_inner = process.inner_exclusive_access();
    -    let condvar = Arc::clone(process_inner.condvar_list[condvar_id].as_ref().unwrap());
    -    let mutex = Arc::clone(process_inner.mutex_list[mutex_id].as_ref().unwrap());
    -    drop(process_inner);
    -    condvar.wait_with_mutex(mutex);
    -    0
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/syscall/thread.rs.html b/public/main/src/os/syscall/thread.rs.html deleted file mode 100644 index aacba748..00000000 --- a/public/main/src/os/syscall/thread.rs.html +++ /dev/null @@ -1,176 +0,0 @@ -thread.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -66
    -67
    -68
    -69
    -70
    -71
    -72
    -73
    -74
    -75
    -76
    -77
    -78
    -79
    -80
    -81
    -82
    -83
    -84
    -85
    -
    use crate::{
    -    mm::kernel_token,
    -    task::{add_task, current_task, TaskControlBlock},
    -    trap::{trap_handler, TrapContext},
    -};
    -use alloc::sync::Arc;
    -
    -pub fn sys_thread_create(entry: usize, arg: usize) -> isize {
    -    let task = current_task().unwrap();
    -    let process = task.process.upgrade().unwrap();
    -    // create a new thread
    -    let new_task = Arc::new(TaskControlBlock::new(
    -        Arc::clone(&process),
    -        task.inner_exclusive_access()
    -            .res
    -            .as_ref()
    -            .unwrap()
    -            .ustack_base,
    -        true,
    -    ));
    -    // add new task to scheduler
    -    add_task(Arc::clone(&new_task));
    -    let new_task_inner = new_task.inner_exclusive_access();
    -    let new_task_res = new_task_inner.res.as_ref().unwrap();
    -    let new_task_tid = new_task_res.tid;
    -    let mut process_inner = process.inner_exclusive_access();
    -    // add new thread to current process
    -    let tasks = &mut process_inner.tasks;
    -    while tasks.len() < new_task_tid + 1 {
    -        tasks.push(None);
    -    }
    -    tasks[new_task_tid] = Some(Arc::clone(&new_task));
    -    let new_task_trap_cx = new_task_inner.get_trap_cx();
    -    *new_task_trap_cx = TrapContext::app_init_context(
    -        entry,
    -        new_task_res.ustack_top(),
    -        kernel_token(),
    -        new_task.kstack.get_top(),
    -        trap_handler as usize,
    -    );
    -    (*new_task_trap_cx).x[10] = arg;
    -    new_task_tid as isize
    -}
    -
    -pub fn sys_gettid() -> isize {
    -    current_task()
    -        .unwrap()
    -        .inner_exclusive_access()
    -        .res
    -        .as_ref()
    -        .unwrap()
    -        .tid as isize
    -}
    -
    -/// thread does not exist, return -1
    -/// thread has not exited yet, return -2
    -/// otherwise, return thread's exit code
    -pub fn sys_waittid(tid: usize) -> i32 {
    -    let task = current_task().unwrap();
    -    let process = task.process.upgrade().unwrap();
    -    let task_inner = task.inner_exclusive_access();
    -    let mut process_inner = process.inner_exclusive_access();
    -    // a thread cannot wait for itself
    -    if task_inner.res.as_ref().unwrap().tid == tid {
    -        return -1;
    -    }
    -    let mut exit_code: Option<i32> = None;
    -    let waited_task = process_inner.tasks[tid].as_ref();
    -    if let Some(waited_task) = waited_task {
    -        if let Some(waited_exit_code) = waited_task.inner_exclusive_access().exit_code {
    -            exit_code = Some(waited_exit_code);
    -        }
    -    } else {
    -        // waited thread does not exist
    -        return -1;
    -    }
    -    if let Some(exit_code) = exit_code {
    -        // dealloc the exited thread
    -        process_inner.tasks[tid] = None;
    -        exit_code
    -    } else {
    -        // waited thread has not exited
    -        -2
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/task/context.rs.html b/public/main/src/os/task/context.rs.html deleted file mode 100644 index 61884b80..00000000 --- a/public/main/src/os/task/context.rs.html +++ /dev/null @@ -1,56 +0,0 @@ -context.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -
    use crate::trap::trap_return;
    -
    -#[repr(C)]
    -pub struct TaskContext {
    -    ra: usize,
    -    sp: usize,
    -    s: [usize; 12],
    -}
    -
    -impl TaskContext {
    -    pub fn zero_init() -> Self {
    -        Self {
    -            ra: 0,
    -            sp: 0,
    -            s: [0; 12],
    -        }
    -    }
    -    pub fn goto_trap_return(kstack_ptr: usize) -> Self {
    -        Self {
    -            ra: trap_return as usize,
    -            sp: kstack_ptr,
    -            s: [0; 12],
    -        }
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/task/id.rs.html b/public/main/src/os/task/id.rs.html deleted file mode 100644 index b35ce17c..00000000 --- a/public/main/src/os/task/id.rs.html +++ /dev/null @@ -1,452 +0,0 @@ -id.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -129
    -130
    -131
    -132
    -133
    -134
    -135
    -136
    -137
    -138
    -139
    -140
    -141
    -142
    -143
    -144
    -145
    -146
    -147
    -148
    -149
    -150
    -151
    -152
    -153
    -154
    -155
    -156
    -157
    -158
    -159
    -160
    -161
    -162
    -163
    -164
    -165
    -166
    -167
    -168
    -169
    -170
    -171
    -172
    -173
    -174
    -175
    -176
    -177
    -178
    -179
    -180
    -181
    -182
    -183
    -184
    -185
    -186
    -187
    -188
    -189
    -190
    -191
    -192
    -193
    -194
    -195
    -196
    -197
    -198
    -199
    -200
    -201
    -202
    -203
    -204
    -205
    -206
    -207
    -208
    -209
    -210
    -211
    -212
    -213
    -214
    -215
    -216
    -217
    -218
    -219
    -220
    -221
    -222
    -223
    -
    use super::ProcessControlBlock;
    -use crate::config::{KERNEL_STACK_SIZE, PAGE_SIZE, TRAMPOLINE, TRAP_CONTEXT_BASE, USER_STACK_SIZE};
    -use crate::mm::{MapPermission, PhysPageNum, VirtAddr, KERNEL_SPACE};
    -use crate::sync::UPIntrFreeCell;
    -use alloc::{
    -    sync::{Arc, Weak},
    -    vec::Vec,
    -};
    -use lazy_static::*;
    -
    -pub struct RecycleAllocator {
    -    current: usize,
    -    recycled: Vec<usize>,
    -}
    -
    -impl RecycleAllocator {
    -    pub fn new() -> Self {
    -        RecycleAllocator {
    -            current: 0,
    -            recycled: Vec::new(),
    -        }
    -    }
    -    pub fn alloc(&mut self) -> usize {
    -        if let Some(id) = self.recycled.pop() {
    -            id
    -        } else {
    -            self.current += 1;
    -            self.current - 1
    -        }
    -    }
    -    pub fn dealloc(&mut self, id: usize) {
    -        assert!(id < self.current);
    -        assert!(
    -            !self.recycled.iter().any(|i| *i == id),
    -            "id {} has been deallocated!",
    -            id
    -        );
    -        self.recycled.push(id);
    -    }
    -}
    -
    -lazy_static! {
    -    static ref PID_ALLOCATOR: UPIntrFreeCell<RecycleAllocator> =
    -        unsafe { UPIntrFreeCell::new(RecycleAllocator::new()) };
    -    static ref KSTACK_ALLOCATOR: UPIntrFreeCell<RecycleAllocator> =
    -        unsafe { UPIntrFreeCell::new(RecycleAllocator::new()) };
    -}
    -
    -pub struct PidHandle(pub usize);
    -
    -pub fn pid_alloc() -> PidHandle {
    -    PidHandle(PID_ALLOCATOR.exclusive_access().alloc())
    -}
    -
    -impl Drop for PidHandle {
    -    fn drop(&mut self) {
    -        PID_ALLOCATOR.exclusive_access().dealloc(self.0);
    -    }
    -}
    -
    -/// Return (bottom, top) of a kernel stack in kernel space.
    -pub fn kernel_stack_position(kstack_id: usize) -> (usize, usize) {
    -    let top = TRAMPOLINE - kstack_id * (KERNEL_STACK_SIZE + PAGE_SIZE);
    -    let bottom = top - KERNEL_STACK_SIZE;
    -    (bottom, top)
    -}
    -
    -pub struct KernelStack(pub usize);
    -
    -pub fn kstack_alloc() -> KernelStack {
    -    let kstack_id = KSTACK_ALLOCATOR.exclusive_access().alloc();
    -    let (kstack_bottom, kstack_top) = kernel_stack_position(kstack_id);
    -    KERNEL_SPACE.exclusive_access().insert_framed_area(
    -        kstack_bottom.into(),
    -        kstack_top.into(),
    -        MapPermission::R | MapPermission::W,
    -    );
    -    KernelStack(kstack_id)
    -}
    -
    -impl Drop for KernelStack {
    -    fn drop(&mut self) {
    -        let (kernel_stack_bottom, _) = kernel_stack_position(self.0);
    -        let kernel_stack_bottom_va: VirtAddr = kernel_stack_bottom.into();
    -        KERNEL_SPACE
    -            .exclusive_access()
    -            .remove_area_with_start_vpn(kernel_stack_bottom_va.into());
    -    }
    -}
    -
    -impl KernelStack {
    -    #[allow(unused)]
    -    pub fn push_on_top<T>(&self, value: T) -> *mut T
    -    where
    -        T: Sized,
    -    {
    -        let kernel_stack_top = self.get_top();
    -        let ptr_mut = (kernel_stack_top - core::mem::size_of::<T>()) as *mut T;
    -        unsafe {
    -            *ptr_mut = value;
    -        }
    -        ptr_mut
    -    }
    -    pub fn get_top(&self) -> usize {
    -        let (_, kernel_stack_top) = kernel_stack_position(self.0);
    -        kernel_stack_top
    -    }
    -}
    -
    -pub struct TaskUserRes {
    -    pub tid: usize,
    -    pub ustack_base: usize,
    -    pub process: Weak<ProcessControlBlock>,
    -}
    -
    -fn trap_cx_bottom_from_tid(tid: usize) -> usize {
    -    TRAP_CONTEXT_BASE - tid * PAGE_SIZE
    -}
    -
    -fn ustack_bottom_from_tid(ustack_base: usize, tid: usize) -> usize {
    -    ustack_base + tid * (PAGE_SIZE + USER_STACK_SIZE)
    -}
    -
    -impl TaskUserRes {
    -    pub fn new(
    -        process: Arc<ProcessControlBlock>,
    -        ustack_base: usize,
    -        alloc_user_res: bool,
    -    ) -> Self {
    -        let tid = process.inner_exclusive_access().alloc_tid();
    -        let task_user_res = Self {
    -            tid,
    -            ustack_base,
    -            process: Arc::downgrade(&process),
    -        };
    -        if alloc_user_res {
    -            task_user_res.alloc_user_res();
    -        }
    -        task_user_res
    -    }
    -
    -    pub fn alloc_user_res(&self) {
    -        let process = self.process.upgrade().unwrap();
    -        let mut process_inner = process.inner_exclusive_access();
    -        // alloc user stack
    -        let ustack_bottom = ustack_bottom_from_tid(self.ustack_base, self.tid);
    -        let ustack_top = ustack_bottom + USER_STACK_SIZE;
    -        process_inner.memory_set.insert_framed_area(
    -            ustack_bottom.into(),
    -            ustack_top.into(),
    -            MapPermission::R | MapPermission::W | MapPermission::U,
    -        );
    -        // alloc trap_cx
    -        let trap_cx_bottom = trap_cx_bottom_from_tid(self.tid);
    -        let trap_cx_top = trap_cx_bottom + PAGE_SIZE;
    -        process_inner.memory_set.insert_framed_area(
    -            trap_cx_bottom.into(),
    -            trap_cx_top.into(),
    -            MapPermission::R | MapPermission::W,
    -        );
    -    }
    -
    -    fn dealloc_user_res(&self) {
    -        // dealloc tid
    -        let process = self.process.upgrade().unwrap();
    -        let mut process_inner = process.inner_exclusive_access();
    -        // dealloc ustack manually
    -        let ustack_bottom_va: VirtAddr = ustack_bottom_from_tid(self.ustack_base, self.tid).into();
    -        process_inner
    -            .memory_set
    -            .remove_area_with_start_vpn(ustack_bottom_va.into());
    -        // dealloc trap_cx manually
    -        let trap_cx_bottom_va: VirtAddr = trap_cx_bottom_from_tid(self.tid).into();
    -        process_inner
    -            .memory_set
    -            .remove_area_with_start_vpn(trap_cx_bottom_va.into());
    -    }
    -
    -    #[allow(unused)]
    -    pub fn alloc_tid(&mut self) {
    -        self.tid = self
    -            .process
    -            .upgrade()
    -            .unwrap()
    -            .inner_exclusive_access()
    -            .alloc_tid();
    -    }
    -
    -    pub fn dealloc_tid(&self) {
    -        let process = self.process.upgrade().unwrap();
    -        let mut process_inner = process.inner_exclusive_access();
    -        process_inner.dealloc_tid(self.tid);
    -    }
    -
    -    pub fn trap_cx_user_va(&self) -> usize {
    -        trap_cx_bottom_from_tid(self.tid)
    -    }
    -
    -    pub fn trap_cx_ppn(&self) -> PhysPageNum {
    -        let process = self.process.upgrade().unwrap();
    -        let process_inner = process.inner_exclusive_access();
    -        let trap_cx_bottom_va: VirtAddr = trap_cx_bottom_from_tid(self.tid).into();
    -        process_inner
    -            .memory_set
    -            .translate(trap_cx_bottom_va.into())
    -            .unwrap()
    -            .ppn()
    -    }
    -
    -    pub fn ustack_base(&self) -> usize {
    -        self.ustack_base
    -    }
    -    pub fn ustack_top(&self) -> usize {
    -        ustack_bottom_from_tid(self.ustack_base, self.tid) + USER_STACK_SIZE
    -    }
    -}
    -
    -impl Drop for TaskUserRes {
    -    fn drop(&mut self) {
    -        self.dealloc_tid();
    -        self.dealloc_user_res();
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/task/manager.rs.html b/public/main/src/os/task/manager.rs.html deleted file mode 100644 index c7609bc0..00000000 --- a/public/main/src/os/task/manager.rs.html +++ /dev/null @@ -1,116 +0,0 @@ -manager.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -
    use super::{ProcessControlBlock, TaskControlBlock};
    -use crate::sync::UPIntrFreeCell;
    -use alloc::collections::{BTreeMap, VecDeque};
    -use alloc::sync::Arc;
    -use lazy_static::*;
    -
    -pub struct TaskManager {
    -    ready_queue: VecDeque<Arc<TaskControlBlock>>,
    -}
    -
    -/// A simple FIFO scheduler.
    -impl TaskManager {
    -    pub fn new() -> Self {
    -        Self {
    -            ready_queue: VecDeque::new(),
    -        }
    -    }
    -    pub fn add(&mut self, task: Arc<TaskControlBlock>) {
    -        self.ready_queue.push_back(task);
    -    }
    -    pub fn fetch(&mut self) -> Option<Arc<TaskControlBlock>> {
    -        self.ready_queue.pop_front()
    -    }
    -}
    -
    -lazy_static! {
    -    pub static ref TASK_MANAGER: UPIntrFreeCell<TaskManager> =
    -        unsafe { UPIntrFreeCell::new(TaskManager::new()) };
    -    pub static ref PID2PCB: UPIntrFreeCell<BTreeMap<usize, Arc<ProcessControlBlock>>> =
    -        unsafe { UPIntrFreeCell::new(BTreeMap::new()) };
    -}
    -
    -pub fn add_task(task: Arc<TaskControlBlock>) {
    -    TASK_MANAGER.exclusive_access().add(task);
    -}
    -
    -pub fn fetch_task() -> Option<Arc<TaskControlBlock>> {
    -    TASK_MANAGER.exclusive_access().fetch()
    -}
    -
    -pub fn pid2process(pid: usize) -> Option<Arc<ProcessControlBlock>> {
    -    let map = PID2PCB.exclusive_access();
    -    map.get(&pid).map(Arc::clone)
    -}
    -
    -pub fn insert_into_pid2process(pid: usize, process: Arc<ProcessControlBlock>) {
    -    PID2PCB.exclusive_access().insert(pid, process);
    -}
    -
    -pub fn remove_from_pid2process(pid: usize) {
    -    let mut map = PID2PCB.exclusive_access();
    -    if map.remove(&pid).is_none() {
    -        panic!("cannot find pid {} in pid2task!", pid);
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/task/mod.rs.html b/public/main/src/os/task/mod.rs.html deleted file mode 100644 index 04483fe6..00000000 --- a/public/main/src/os/task/mod.rs.html +++ /dev/null @@ -1,272 +0,0 @@ -mod.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -129
    -130
    -131
    -132
    -133
    -
    mod context;
    -mod id;
    -mod manager;
    -mod process;
    -mod processor;
    -mod signal;
    -mod switch;
    -#[allow(clippy::module_inception)]
    -mod task;
    -
    -use crate::fs::{open_file, OpenFlags};
    -use alloc::sync::Arc;
    -use lazy_static::*;
    -use manager::fetch_task;
    -use process::ProcessControlBlock;
    -use switch::__switch;
    -
    -pub use context::TaskContext;
    -pub use id::{kstack_alloc, pid_alloc, KernelStack, PidHandle};
    -pub use manager::{add_task, pid2process, remove_from_pid2process};
    -pub use processor::{
    -    current_kstack_top, current_process, current_task, current_trap_cx, current_trap_cx_user_va,
    -    current_user_token, run_tasks, schedule, take_current_task,
    -};
    -pub use signal::SignalFlags;
    -pub use task::{TaskControlBlock, TaskStatus};
    -
    -pub fn suspend_current_and_run_next() {
    -    // There must be an application running.
    -    let task = take_current_task().unwrap();
    -
    -    // ---- access current TCB exclusively
    -    let mut task_inner = task.inner_exclusive_access();
    -    let task_cx_ptr = &mut task_inner.task_cx as *mut TaskContext;
    -    // Change status to Ready
    -    task_inner.task_status = TaskStatus::Ready;
    -    drop(task_inner);
    -    // ---- release current TCB
    -
    -    // push back to ready queue.
    -    add_task(task);
    -    // jump to scheduling cycle
    -    schedule(task_cx_ptr);
    -}
    -
    -/// This function must be followed by a schedule
    -pub fn block_current_task() -> *mut TaskContext {
    -    let task = take_current_task().unwrap();
    -    let mut task_inner = task.inner_exclusive_access();
    -    task_inner.task_status = TaskStatus::Blocking;
    -    &mut task_inner.task_cx as *mut TaskContext
    -}
    -
    -pub fn block_current_and_run_next() {
    -    let task_cx_ptr = block_current_task(); 
    -    schedule(task_cx_ptr);
    -}
    -
    -pub fn exit_current_and_run_next(exit_code: i32) {
    -    let task = take_current_task().unwrap();
    -    let mut task_inner = task.inner_exclusive_access();
    -    let process = task.process.upgrade().unwrap();
    -    let tid = task_inner.res.as_ref().unwrap().tid;
    -    // record exit code
    -    task_inner.exit_code = Some(exit_code);
    -    task_inner.res = None;
    -    // here we do not remove the thread since we are still using the kstack
    -    // it will be deallocated when sys_waittid is called
    -    drop(task_inner);
    -    drop(task);
    -    // however, if this is the main thread of current process
    -    // the process should terminate at once
    -    if tid == 0 {
    -        remove_from_pid2process(process.getpid());
    -        let mut process_inner = process.inner_exclusive_access();
    -        // mark this process as a zombie process
    -        process_inner.is_zombie = true;
    -        // record exit code of main process
    -        process_inner.exit_code = exit_code;
    -
    -        {
    -            // move all child processes under init process
    -            let mut initproc_inner = INITPROC.inner_exclusive_access();
    -            for child in process_inner.children.iter() {
    -                child.inner_exclusive_access().parent = Some(Arc::downgrade(&INITPROC));
    -                initproc_inner.children.push(child.clone());
    -            }
    -        }
    -
    -        // deallocate user res (including tid/trap_cx/ustack) of all threads
    -        // it has to be done before we dealloc the whole memory_set
    -        // otherwise they will be deallocated twice
    -        for task in process_inner.tasks.iter().filter(|t| t.is_some()) {
    -            let task = task.as_ref().unwrap();
    -            let mut task_inner = task.inner_exclusive_access();
    -            task_inner.res = None;
    -        }
    -
    -        process_inner.children.clear();
    -        // deallocate other data in user space i.e. program code/data section
    -        process_inner.memory_set.recycle_data_pages();
    -        // drop file descriptors
    -        process_inner.fd_table.clear();
    -    }
    -    drop(process);
    -    // we do not have to save task context
    -    let mut _unused = TaskContext::zero_init();
    -    schedule(&mut _unused as *mut _);
    -}
    -
    -lazy_static! {
    -    pub static ref INITPROC: Arc<ProcessControlBlock> = {
    -        let inode = open_file("initproc", OpenFlags::RDONLY).unwrap();
    -        let v = inode.read_all();
    -        ProcessControlBlock::new(v.as_slice())
    -    };
    -}
    -
    -pub fn add_initproc() {
    -    let _initproc = INITPROC.clone();
    -}
    -
    -pub fn check_signals_of_current() -> Option<(i32, &'static str)> {
    -    let process = current_process();
    -    let process_inner = process.inner_exclusive_access();
    -    process_inner.signals.check_error()
    -}
    -
    -pub fn current_add_signal(signal: SignalFlags) {
    -    let process = current_process();
    -    let mut process_inner = process.inner_exclusive_access();
    -    process_inner.signals |= signal;
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/task/process.rs.html b/public/main/src/os/task/process.rs.html deleted file mode 100644 index 305d5e4b..00000000 --- a/public/main/src/os/task/process.rs.html +++ /dev/null @@ -1,522 +0,0 @@ -process.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -129
    -130
    -131
    -132
    -133
    -134
    -135
    -136
    -137
    -138
    -139
    -140
    -141
    -142
    -143
    -144
    -145
    -146
    -147
    -148
    -149
    -150
    -151
    -152
    -153
    -154
    -155
    -156
    -157
    -158
    -159
    -160
    -161
    -162
    -163
    -164
    -165
    -166
    -167
    -168
    -169
    -170
    -171
    -172
    -173
    -174
    -175
    -176
    -177
    -178
    -179
    -180
    -181
    -182
    -183
    -184
    -185
    -186
    -187
    -188
    -189
    -190
    -191
    -192
    -193
    -194
    -195
    -196
    -197
    -198
    -199
    -200
    -201
    -202
    -203
    -204
    -205
    -206
    -207
    -208
    -209
    -210
    -211
    -212
    -213
    -214
    -215
    -216
    -217
    -218
    -219
    -220
    -221
    -222
    -223
    -224
    -225
    -226
    -227
    -228
    -229
    -230
    -231
    -232
    -233
    -234
    -235
    -236
    -237
    -238
    -239
    -240
    -241
    -242
    -243
    -244
    -245
    -246
    -247
    -248
    -249
    -250
    -251
    -252
    -253
    -254
    -255
    -256
    -257
    -258
    -
    use super::id::RecycleAllocator;
    -use super::manager::insert_into_pid2process;
    -use super::TaskControlBlock;
    -use super::{add_task, SignalFlags};
    -use super::{pid_alloc, PidHandle};
    -use crate::fs::{File, Stdin, Stdout};
    -use crate::mm::{translated_refmut, MemorySet, KERNEL_SPACE};
    -use crate::sync::{Condvar, Mutex, Semaphore, UPIntrFreeCell, UPIntrRefMut};
    -use crate::trap::{trap_handler, TrapContext};
    -use alloc::string::String;
    -use alloc::sync::{Arc, Weak};
    -use alloc::vec;
    -use alloc::vec::Vec;
    -
    -pub struct ProcessControlBlock {
    -    // immutable
    -    pub pid: PidHandle,
    -    // mutable
    -    inner: UPIntrFreeCell<ProcessControlBlockInner>,
    -}
    -
    -pub struct ProcessControlBlockInner {
    -    pub is_zombie: bool,
    -    pub memory_set: MemorySet,
    -    pub parent: Option<Weak<ProcessControlBlock>>,
    -    pub children: Vec<Arc<ProcessControlBlock>>,
    -    pub exit_code: i32,
    -    pub fd_table: Vec<Option<Arc<dyn File + Send + Sync>>>,
    -    pub signals: SignalFlags,
    -    pub tasks: Vec<Option<Arc<TaskControlBlock>>>,
    -    pub task_res_allocator: RecycleAllocator,
    -    pub mutex_list: Vec<Option<Arc<dyn Mutex>>>,
    -    pub semaphore_list: Vec<Option<Arc<Semaphore>>>,
    -    pub condvar_list: Vec<Option<Arc<Condvar>>>,
    -}
    -
    -impl ProcessControlBlockInner {
    -    #[allow(unused)]
    -    pub fn get_user_token(&self) -> usize {
    -        self.memory_set.token()
    -    }
    -
    -    pub fn alloc_fd(&mut self) -> usize {
    -        if let Some(fd) = (0..self.fd_table.len()).find(|fd| self.fd_table[*fd].is_none()) {
    -            fd
    -        } else {
    -            self.fd_table.push(None);
    -            self.fd_table.len() - 1
    -        }
    -    }
    -
    -    pub fn alloc_tid(&mut self) -> usize {
    -        self.task_res_allocator.alloc()
    -    }
    -
    -    pub fn dealloc_tid(&mut self, tid: usize) {
    -        self.task_res_allocator.dealloc(tid)
    -    }
    -
    -    pub fn thread_count(&self) -> usize {
    -        self.tasks.len()
    -    }
    -
    -    pub fn get_task(&self, tid: usize) -> Arc<TaskControlBlock> {
    -        self.tasks[tid].as_ref().unwrap().clone()
    -    }
    -}
    -
    -impl ProcessControlBlock {
    -    pub fn inner_exclusive_access(&self) -> UPIntrRefMut<'_, ProcessControlBlockInner> {
    -        self.inner.exclusive_access()
    -    }
    -
    -    pub fn new(elf_data: &[u8]) -> Arc<Self> {
    -        // memory_set with elf program headers/trampoline/trap context/user stack
    -        let (memory_set, ustack_base, entry_point) = MemorySet::from_elf(elf_data);
    -        // allocate a pid
    -        let pid_handle = pid_alloc();
    -        let process = Arc::new(Self {
    -            pid: pid_handle,
    -            inner: unsafe {
    -                UPIntrFreeCell::new(ProcessControlBlockInner {
    -                    is_zombie: false,
    -                    memory_set,
    -                    parent: None,
    -                    children: Vec::new(),
    -                    exit_code: 0,
    -                    fd_table: vec![
    -                        // 0 -> stdin
    -                        Some(Arc::new(Stdin)),
    -                        // 1 -> stdout
    -                        Some(Arc::new(Stdout)),
    -                        // 2 -> stderr
    -                        Some(Arc::new(Stdout)),
    -                    ],
    -                    signals: SignalFlags::empty(),
    -                    tasks: Vec::new(),
    -                    task_res_allocator: RecycleAllocator::new(),
    -                    mutex_list: Vec::new(),
    -                    semaphore_list: Vec::new(),
    -                    condvar_list: Vec::new(),
    -                })
    -            },
    -        });
    -        // create a main thread, we should allocate ustack and trap_cx here
    -        let task = Arc::new(TaskControlBlock::new(
    -            Arc::clone(&process),
    -            ustack_base,
    -            true,
    -        ));
    -        // prepare trap_cx of main thread
    -        let task_inner = task.inner_exclusive_access();
    -        let trap_cx = task_inner.get_trap_cx();
    -        let ustack_top = task_inner.res.as_ref().unwrap().ustack_top();
    -        let kstack_top = task.kstack.get_top();
    -        drop(task_inner);
    -        *trap_cx = TrapContext::app_init_context(
    -            entry_point,
    -            ustack_top,
    -            KERNEL_SPACE.exclusive_access().token(),
    -            kstack_top,
    -            trap_handler as usize,
    -        );
    -        // add main thread to the process
    -        let mut process_inner = process.inner_exclusive_access();
    -        process_inner.tasks.push(Some(Arc::clone(&task)));
    -        drop(process_inner);
    -        insert_into_pid2process(process.getpid(), Arc::clone(&process));
    -        // add main thread to scheduler
    -        add_task(task);
    -        process
    -    }
    -
    -    /// Only support processes with a single thread.
    -    pub fn exec(self: &Arc<Self>, elf_data: &[u8], args: Vec<String>) {
    -        assert_eq!(self.inner_exclusive_access().thread_count(), 1);
    -        // memory_set with elf program headers/trampoline/trap context/user stack
    -        let (memory_set, ustack_base, entry_point) = MemorySet::from_elf(elf_data);
    -        let new_token = memory_set.token();
    -        // substitute memory_set
    -        self.inner_exclusive_access().memory_set = memory_set;
    -        // then we alloc user resource for main thread again
    -        // since memory_set has been changed
    -        let task = self.inner_exclusive_access().get_task(0);
    -        let mut task_inner = task.inner_exclusive_access();
    -        task_inner.res.as_mut().unwrap().ustack_base = ustack_base;
    -        task_inner.res.as_mut().unwrap().alloc_user_res();
    -        task_inner.trap_cx_ppn = task_inner.res.as_mut().unwrap().trap_cx_ppn();
    -        // push arguments on user stack
    -        let mut user_sp = task_inner.res.as_mut().unwrap().ustack_top();
    -        user_sp -= (args.len() + 1) * core::mem::size_of::<usize>();
    -        let argv_base = user_sp;
    -        let mut argv: Vec<_> = (0..=args.len())
    -            .map(|arg| {
    -                translated_refmut(
    -                    new_token,
    -                    (argv_base + arg * core::mem::size_of::<usize>()) as *mut usize,
    -                )
    -            })
    -            .collect();
    -        *argv[args.len()] = 0;
    -        for i in 0..args.len() {
    -            user_sp -= args[i].len() + 1;
    -            *argv[i] = user_sp;
    -            let mut p = user_sp;
    -            for c in args[i].as_bytes() {
    -                *translated_refmut(new_token, p as *mut u8) = *c;
    -                p += 1;
    -            }
    -            *translated_refmut(new_token, p as *mut u8) = 0;
    -        }
    -        // make the user_sp aligned to 8B for k210 platform
    -        user_sp -= user_sp % core::mem::size_of::<usize>();
    -        // initialize trap_cx
    -        let mut trap_cx = TrapContext::app_init_context(
    -            entry_point,
    -            user_sp,
    -            KERNEL_SPACE.exclusive_access().token(),
    -            task.kstack.get_top(),
    -            trap_handler as usize,
    -        );
    -        trap_cx.x[10] = args.len();
    -        trap_cx.x[11] = argv_base;
    -        *task_inner.get_trap_cx() = trap_cx;
    -    }
    -
    -    /// Only support processes with a single thread.
    -    pub fn fork(self: &Arc<Self>) -> Arc<Self> {
    -        let mut parent = self.inner_exclusive_access();
    -        assert_eq!(parent.thread_count(), 1);
    -        // clone parent's memory_set completely including trampoline/ustacks/trap_cxs
    -        let memory_set = MemorySet::from_existed_user(&parent.memory_set);
    -        // alloc a pid
    -        let pid = pid_alloc();
    -        // copy fd table
    -        let mut new_fd_table: Vec<Option<Arc<dyn File + Send + Sync>>> = Vec::new();
    -        for fd in parent.fd_table.iter() {
    -            if let Some(file) = fd {
    -                new_fd_table.push(Some(file.clone()));
    -            } else {
    -                new_fd_table.push(None);
    -            }
    -        }
    -        // create child process pcb
    -        let child = Arc::new(Self {
    -            pid,
    -            inner: unsafe {
    -                UPIntrFreeCell::new(ProcessControlBlockInner {
    -                    is_zombie: false,
    -                    memory_set,
    -                    parent: Some(Arc::downgrade(self)),
    -                    children: Vec::new(),
    -                    exit_code: 0,
    -                    fd_table: new_fd_table,
    -                    signals: SignalFlags::empty(),
    -                    tasks: Vec::new(),
    -                    task_res_allocator: RecycleAllocator::new(),
    -                    mutex_list: Vec::new(),
    -                    semaphore_list: Vec::new(),
    -                    condvar_list: Vec::new(),
    -                })
    -            },
    -        });
    -        // add child
    -        parent.children.push(Arc::clone(&child));
    -        // create main thread of child process
    -        let task = Arc::new(TaskControlBlock::new(
    -            Arc::clone(&child),
    -            parent
    -                .get_task(0)
    -                .inner_exclusive_access()
    -                .res
    -                .as_ref()
    -                .unwrap()
    -                .ustack_base(),
    -            // here we do not allocate trap_cx or ustack again
    -            // but mention that we allocate a new kstack here
    -            false,
    -        ));
    -        // attach task to child process
    -        let mut child_inner = child.inner_exclusive_access();
    -        child_inner.tasks.push(Some(Arc::clone(&task)));
    -        drop(child_inner);
    -        // modify kstack_top in trap_cx of this thread
    -        let task_inner = task.inner_exclusive_access();
    -        let trap_cx = task_inner.get_trap_cx();
    -        trap_cx.kernel_sp = task.kstack.get_top();
    -        drop(task_inner);
    -        insert_into_pid2process(child.getpid(), Arc::clone(&child));
    -        // add this thread to scheduler
    -        add_task(task);
    -        child
    -    }
    -
    -    pub fn getpid(&self) -> usize {
    -        self.pid.0
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/task/processor.rs.html b/public/main/src/os/task/processor.rs.html deleted file mode 100644 index 86deddff..00000000 --- a/public/main/src/os/task/processor.rs.html +++ /dev/null @@ -1,212 +0,0 @@ -processor.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    -100
    -101
    -102
    -103
    -
    use super::__switch;
    -use super::{fetch_task, TaskStatus};
    -use super::{ProcessControlBlock, TaskContext, TaskControlBlock};
    -use crate::sync::UPIntrFreeCell;
    -use crate::trap::TrapContext;
    -use alloc::sync::Arc;
    -use lazy_static::*;
    -
    -pub struct Processor {
    -    current: Option<Arc<TaskControlBlock>>,
    -    idle_task_cx: TaskContext,
    -}
    -
    -impl Processor {
    -    pub fn new() -> Self {
    -        Self {
    -            current: None,
    -            idle_task_cx: TaskContext::zero_init(),
    -        }
    -    }
    -    fn get_idle_task_cx_ptr(&mut self) -> *mut TaskContext {
    -        &mut self.idle_task_cx as *mut _
    -    }
    -    pub fn take_current(&mut self) -> Option<Arc<TaskControlBlock>> {
    -        self.current.take()
    -    }
    -    pub fn current(&self) -> Option<Arc<TaskControlBlock>> {
    -        self.current.as_ref().map(Arc::clone)
    -    }
    -}
    -
    -lazy_static! {
    -    pub static ref PROCESSOR: UPIntrFreeCell<Processor> = unsafe { UPIntrFreeCell::new(Processor::new()) };
    -}
    -
    -pub fn run_tasks() {
    -    loop {
    -        let mut processor = PROCESSOR.exclusive_access();
    -        if let Some(task) = fetch_task() {
    -            let idle_task_cx_ptr = processor.get_idle_task_cx_ptr();
    -            // access coming task TCB exclusively
    -            let next_task_cx_ptr = task.inner.exclusive_session(|task_inner| {
    -                task_inner.task_status = TaskStatus::Running;
    -                &task_inner.task_cx as *const TaskContext
    -            });
    -            processor.current = Some(task);
    -            // release processor manually
    -            drop(processor);
    -            unsafe {
    -                __switch(idle_task_cx_ptr, next_task_cx_ptr);
    -            }
    -        } else {
    -            println!("no tasks available in run_tasks");
    -        }
    -    }
    -}
    -
    -pub fn take_current_task() -> Option<Arc<TaskControlBlock>> {
    -    PROCESSOR.exclusive_access().take_current()
    -}
    -
    -pub fn current_task() -> Option<Arc<TaskControlBlock>> {
    -    PROCESSOR.exclusive_access().current()
    -}
    -
    -pub fn current_process() -> Arc<ProcessControlBlock> {
    -    current_task().unwrap().process.upgrade().unwrap()
    -}
    -
    -pub fn current_user_token() -> usize {
    -    let task = current_task().unwrap();
    -    task.get_user_token()
    -}
    -
    -pub fn current_trap_cx() -> &'static mut TrapContext {
    -    current_task()
    -        .unwrap()
    -        .inner_exclusive_access()
    -        .get_trap_cx()
    -}
    -
    -pub fn current_trap_cx_user_va() -> usize {
    -    current_task()
    -        .unwrap()
    -        .inner_exclusive_access()
    -        .res
    -        .as_ref()
    -        .unwrap()
    -        .trap_cx_user_va()
    -}
    -
    -pub fn current_kstack_top() -> usize {
    -    current_task().unwrap().kstack.get_top()
    -}
    -
    -pub fn schedule(switched_task_cx_ptr: *mut TaskContext) {
    -    let idle_task_cx_ptr = PROCESSOR.exclusive_session(|processor| {
    -        processor.get_idle_task_cx_ptr()
    -    });
    -    unsafe {
    -        __switch(switched_task_cx_ptr, idle_task_cx_ptr);
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/task/signal.rs.html b/public/main/src/os/task/signal.rs.html deleted file mode 100644 index 31594845..00000000 --- a/public/main/src/os/task/signal.rs.html +++ /dev/null @@ -1,64 +0,0 @@ -signal.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -
    use bitflags::*;
    -
    -bitflags! {
    -    pub struct SignalFlags: u32 {
    -        const SIGINT    = 1 << 2;
    -        const SIGILL    = 1 << 4;
    -        const SIGABRT   = 1 << 6;
    -        const SIGFPE    = 1 << 8;
    -        const SIGSEGV   = 1 << 11;
    -    }
    -}
    -
    -impl SignalFlags {
    -    pub fn check_error(&self) -> Option<(i32, &'static str)> {
    -        if self.contains(Self::SIGINT) {
    -            Some((-2, "Killed, SIGINT=2"))
    -        } else if self.contains(Self::SIGILL) {
    -            Some((-4, "Illegal Instruction, SIGILL=4"))
    -        } else if self.contains(Self::SIGABRT) {
    -            Some((-6, "Aborted, SIGABRT=6"))
    -        } else if self.contains(Self::SIGFPE) {
    -            Some((-8, "Erroneous Arithmetic Operation, SIGFPE=8"))
    -        } else if self.contains(Self::SIGSEGV) {
    -            Some((-11, "Segmentation Fault, SIGSEGV=11"))
    -        } else {
    -            None
    -        }
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/task/switch.rs.html b/public/main/src/os/task/switch.rs.html deleted file mode 100644 index 416474a8..00000000 --- a/public/main/src/os/task/switch.rs.html +++ /dev/null @@ -1,22 +0,0 @@ -switch.rs - source -
    1
    -2
    -3
    -4
    -5
    -6
    -7
    -8
    -
    use super::TaskContext;
    -use core::arch::global_asm;
    -
    -global_asm!(include_str!("switch.S"));
    -
    -extern "C" {
    -    pub fn __switch(current_task_cx_ptr: *mut TaskContext, next_task_cx_ptr: *const TaskContext);
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/task/task.rs.html b/public/main/src/os/task/task.rs.html deleted file mode 100644 index 6dda3249..00000000 --- a/public/main/src/os/task/task.rs.html +++ /dev/null @@ -1,160 +0,0 @@ -task.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -66
    -67
    -68
    -69
    -70
    -71
    -72
    -73
    -74
    -75
    -76
    -77
    -
    use super::id::TaskUserRes;
    -use super::{kstack_alloc, KernelStack, ProcessControlBlock, TaskContext};
    -use crate::trap::TrapContext;
    -use crate::{mm::PhysPageNum, sync::{UPIntrFreeCell, UPIntrRefMut}};
    -use alloc::sync::{Arc, Weak};
    -
    -pub struct TaskControlBlock {
    -    // immutable
    -    pub process: Weak<ProcessControlBlock>,
    -    pub kstack: KernelStack,
    -    // mutable
    -    pub inner: UPIntrFreeCell<TaskControlBlockInner>,
    -}
    -
    -impl TaskControlBlock {
    -    pub fn inner_exclusive_access(&self) -> UPIntrRefMut<'_, TaskControlBlockInner> {
    -        self.inner.exclusive_access()
    -    }
    -
    -    pub fn get_user_token(&self) -> usize {
    -        let process = self.process.upgrade().unwrap();
    -        let inner = process.inner_exclusive_access();
    -        inner.memory_set.token()
    -    }
    -}
    -
    -pub struct TaskControlBlockInner {
    -    pub res: Option<TaskUserRes>,
    -    pub trap_cx_ppn: PhysPageNum,
    -    pub task_cx: TaskContext,
    -    pub task_status: TaskStatus,
    -    pub exit_code: Option<i32>,
    -}
    -
    -impl TaskControlBlockInner {
    -    pub fn get_trap_cx(&self) -> &'static mut TrapContext {
    -        self.trap_cx_ppn.get_mut()
    -    }
    -
    -    #[allow(unused)]
    -    fn get_status(&self) -> TaskStatus {
    -        self.task_status
    -    }
    -}
    -
    -impl TaskControlBlock {
    -    pub fn new(
    -        process: Arc<ProcessControlBlock>,
    -        ustack_base: usize,
    -        alloc_user_res: bool,
    -    ) -> Self {
    -        let res = TaskUserRes::new(Arc::clone(&process), ustack_base, alloc_user_res);
    -        let trap_cx_ppn = res.trap_cx_ppn();
    -        let kstack = kstack_alloc();
    -        let kstack_top = kstack.get_top();
    -        Self {
    -            process: Arc::downgrade(&process),
    -            kstack,
    -            inner: unsafe {
    -                UPIntrFreeCell::new(TaskControlBlockInner {
    -                    res: Some(res),
    -                    trap_cx_ppn,
    -                    task_cx: TaskContext::goto_trap_return(kstack_top),
    -                    task_status: TaskStatus::Ready,
    -                    exit_code: None,
    -                })
    -            },
    -        }
    -    }
    -}
    -
    -#[derive(Copy, Clone, PartialEq)]
    -pub enum TaskStatus {
    -    Ready,
    -    Running,
    -    Blocking,
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/timer.rs.html b/public/main/src/os/timer.rs.html deleted file mode 100644 index 8c75b029..00000000 --- a/public/main/src/os/timer.rs.html +++ /dev/null @@ -1,152 +0,0 @@ -timer.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -40
    -41
    -42
    -43
    -44
    -45
    -46
    -47
    -48
    -49
    -50
    -51
    -52
    -53
    -54
    -55
    -56
    -57
    -58
    -59
    -60
    -61
    -62
    -63
    -64
    -65
    -66
    -67
    -68
    -69
    -70
    -71
    -72
    -73
    -
    use core::cmp::Ordering;
    -
    -use crate::config::CLOCK_FREQ;
    -use crate::sbi::set_timer;
    -use crate::sync::UPIntrFreeCell;
    -use crate::task::{add_task, TaskControlBlock};
    -use alloc::collections::BinaryHeap;
    -use alloc::sync::Arc;
    -use lazy_static::*;
    -use riscv::register::time;
    -
    -const TICKS_PER_SEC: usize = 100;
    -const MSEC_PER_SEC: usize = 1000;
    -
    -pub fn get_time() -> usize {
    -    time::read()
    -}
    -
    -pub fn get_time_ms() -> usize {
    -    time::read() / (CLOCK_FREQ / MSEC_PER_SEC)
    -}
    -
    -pub fn set_next_trigger() {
    -    set_timer(get_time() + CLOCK_FREQ / TICKS_PER_SEC);
    -}
    -
    -pub struct TimerCondVar {
    -    pub expire_ms: usize,
    -    pub task: Arc<TaskControlBlock>,
    -}
    -
    -impl PartialEq for TimerCondVar {
    -    fn eq(&self, other: &Self) -> bool {
    -        self.expire_ms == other.expire_ms
    -    }
    -}
    -impl Eq for TimerCondVar {}
    -impl PartialOrd for TimerCondVar {
    -    fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
    -        let a = -(self.expire_ms as isize);
    -        let b = -(other.expire_ms as isize);
    -        Some(a.cmp(&b))
    -    }
    -}
    -
    -impl Ord for TimerCondVar {
    -    fn cmp(&self, other: &Self) -> Ordering {
    -        self.partial_cmp(other).unwrap()
    -    }
    -}
    -
    -lazy_static! {
    -    static ref TIMERS: UPIntrFreeCell<BinaryHeap<TimerCondVar>> =
    -        unsafe { UPIntrFreeCell::new(BinaryHeap::<TimerCondVar>::new()) };
    -}
    -
    -pub fn add_timer(expire_ms: usize, task: Arc<TaskControlBlock>) {
    -    let mut timers = TIMERS.exclusive_access();
    -    timers.push(TimerCondVar { expire_ms, task });
    -}
    -
    -pub fn check_timer() {
    -    let current_ms = get_time_ms();
    -    let mut timers = TIMERS.exclusive_access();
    -    while let Some(timer) = timers.peek() {
    -        if timer.expire_ms <= current_ms {
    -            add_task(Arc::clone(&timer.task));
    -            timers.pop();
    -        } else {
    -            break;
    -        }
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/trap/context.rs.html b/public/main/src/os/trap/context.rs.html deleted file mode 100644 index 969a581d..00000000 --- a/public/main/src/os/trap/context.rs.html +++ /dev/null @@ -1,84 +0,0 @@ -context.rs - source -
     1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    -10
    -11
    -12
    -13
    -14
    -15
    -16
    -17
    -18
    -19
    -20
    -21
    -22
    -23
    -24
    -25
    -26
    -27
    -28
    -29
    -30
    -31
    -32
    -33
    -34
    -35
    -36
    -37
    -38
    -39
    -
    use riscv::register::sstatus::{self, Sstatus, SPP};
    -
    -#[repr(C)]
    -#[derive(Debug)]
    -pub struct TrapContext {
    -    pub x: [usize; 32],
    -    pub sstatus: Sstatus,
    -    pub sepc: usize,
    -    pub kernel_satp: usize,
    -    pub kernel_sp: usize,
    -    pub trap_handler: usize,
    -}
    -
    -impl TrapContext {
    -    pub fn set_sp(&mut self, sp: usize) {
    -        self.x[2] = sp;
    -    }
    -    pub fn app_init_context(
    -        entry: usize,
    -        sp: usize,
    -        kernel_satp: usize,
    -        kernel_sp: usize,
    -        trap_handler: usize,
    -    ) -> Self {
    -        let mut sstatus = sstatus::read();
    -        // set CPU privilege to User after trapping back
    -        sstatus.set_spp(SPP::User);
    -        let mut cx = Self {
    -            x: [0; 32],
    -            sstatus,
    -            sepc: entry,
    -            kernel_satp,
    -            kernel_sp,
    -            trap_handler,
    -        };
    -        cx.set_sp(sp);
    -        cx
    -    }
    -}
    -
    -
    - \ No newline at end of file diff --git a/public/main/src/os/trap/mod.rs.html b/public/main/src/os/trap/mod.rs.html deleted file mode 100644 index 1651a7c7..00000000 --- a/public/main/src/os/trap/mod.rs.html +++ /dev/null @@ -1,344 +0,0 @@ -mod.rs - source -
      1
    -  2
    -  3
    -  4
    -  5
    -  6
    -  7
    -  8
    -  9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 70
    - 71
    - 72
    - 73
    - 74
    - 75
    - 76
    - 77
    - 78
    - 79
    - 80
    - 81
    - 82
    - 83
    - 84
    - 85
    - 86
    - 87
    - 88
    - 89
    - 90
    - 91
    - 92
    - 93
    - 94
    - 95
    - 96
    - 97
    - 98
    - 99
    -100
    -101
    -102
    -103
    -104
    -105
    -106
    -107
    -108
    -109
    -110
    -111
    -112
    -113
    -114
    -115
    -116
    -117
    -118
    -119
    -120
    -121
    -122
    -123
    -124
    -125
    -126
    -127
    -128
    -129
    -130
    -131
    -132
    -133
    -134
    -135
    -136
    -137
    -138
    -139
    -140
    -141
    -142
    -143
    -144
    -145
    -146
    -147
    -148
    -149
    -150
    -151
    -152
    -153
    -154
    -155
    -156
    -157
    -158
    -159
    -160
    -161
    -162
    -163
    -164
    -165
    -166
    -167
    -168
    -169
    -
    mod context;
    -
    -use crate::config::TRAMPOLINE;
    -use crate::syscall::syscall;
    -use crate::task::{
    -    check_signals_of_current, current_add_signal, current_trap_cx, current_trap_cx_user_va,
    -    current_user_token, exit_current_and_run_next, suspend_current_and_run_next, SignalFlags,
    -};
    -use crate::timer::{check_timer, set_next_trigger};
    -use core::arch::{asm, global_asm};
    -use riscv::register::{
    -    mtvec::TrapMode,
    -    scause::{self, Exception, Interrupt, Trap},
    -    sie, stval, stvec, sstatus, sscratch,
    -};
    -
    -global_asm!(include_str!("trap.S"));
    -
    -pub fn init() {
    -    set_kernel_trap_entry();
    -}
    -
    -fn set_kernel_trap_entry() {
    -    extern "C" {
    -        fn __alltraps();
    -        fn __alltraps_k(); 
    -    }
    -    let __alltraps_k_va = __alltraps_k as usize - __alltraps as usize + TRAMPOLINE;
    -    unsafe {
    -        stvec::write(__alltraps_k_va, TrapMode::Direct);
    -        sscratch::write(trap_from_kernel as usize);
    -    }
    -}
    -
    -fn set_user_trap_entry() {
    -    unsafe {
    -        stvec::write(TRAMPOLINE as usize, TrapMode::Direct);
    -    }
    -}
    -
    -pub fn enable_timer_interrupt() {
    -    unsafe {
    -        sie::set_stimer();
    -    }
    -}
    -
    -fn enable_supervisor_interrupt() {
    -    unsafe {
    -        sstatus::set_sie();
    -    }
    -}
    -
    -fn disable_supervisor_interrupt() {
    -    unsafe {
    -        sstatus::clear_sie(); 
    -    }
    -}
    -
    -#[no_mangle]
    -pub fn trap_handler() -> ! {
    -    set_kernel_trap_entry();
    -    let scause = scause::read();
    -    let stval = stval::read();
    -    //println!("into {:?}", scause.cause());
    -    match scause.cause() {
    -        Trap::Exception(Exception::UserEnvCall) => {
    -            // jump to next instruction anyway
    -            let mut cx = current_trap_cx();
    -            cx.sepc += 4;
    -            
    -            enable_supervisor_interrupt();
    -
    -            // get system call return value
    -            let result = syscall(cx.x[17], [cx.x[10], cx.x[11], cx.x[12]]);
    -            // cx is changed during sys_exec, so we have to call it again
    -            cx = current_trap_cx();
    -            cx.x[10] = result as usize;
    -        }
    -        Trap::Exception(Exception::StoreFault)
    -        | Trap::Exception(Exception::StorePageFault)
    -        | Trap::Exception(Exception::InstructionFault)
    -        | Trap::Exception(Exception::InstructionPageFault)
    -        | Trap::Exception(Exception::LoadFault)
    -        | Trap::Exception(Exception::LoadPageFault) => {
    -            /*
    -            println!(
    -                "[kernel] {:?} in application, bad addr = {:#x}, bad instruction = {:#x}, kernel killed it.",
    -                scause.cause(),
    -                stval,
    -                current_trap_cx().sepc,
    -            );
    -            */
    -            current_add_signal(SignalFlags::SIGSEGV);
    -        }
    -        Trap::Exception(Exception::IllegalInstruction) => {
    -            current_add_signal(SignalFlags::SIGILL);
    -        }
    -        Trap::Interrupt(Interrupt::SupervisorTimer) => {
    -            set_next_trigger();
    -            check_timer();
    -            suspend_current_and_run_next();
    -        }
    -        Trap::Interrupt(Interrupt::SupervisorExternal) => {
    -            crate::board::irq_handler();
    -        }
    -        _ => {
    -            panic!(
    -                "Unsupported trap {:?}, stval = {:#x}!",
    -                scause.cause(),
    -                stval
    -            );
    -        }
    -    }
    -    // check signals
    -    if let Some((errno, msg)) = check_signals_of_current() {
    -        println!("[kernel] {}", msg);
    -        exit_current_and_run_next(errno);
    -    }
    -    trap_return();
    -}
    -
    -#[no_mangle]
    -pub fn trap_return() -> ! {
    -    disable_supervisor_interrupt();
    -    set_user_trap_entry();
    -    let trap_cx_user_va = current_trap_cx_user_va();
    -    let user_satp = current_user_token();
    -    extern "C" {
    -        fn __alltraps();
    -        fn __restore();
    -    }
    -    let restore_va = __restore as usize - __alltraps as usize + TRAMPOLINE;
    -    //println!("before return");
    -    unsafe {
    -        asm!(
    -            "fence.i",
    -            "jr {restore_va}",
    -            restore_va = in(reg) restore_va,
    -            in("a0") trap_cx_user_va,
    -            in("a1") user_satp,
    -            options(noreturn)
    -        );
    -    }
    -}
    -
    -#[no_mangle]
    -pub fn trap_from_kernel(_trap_cx: &TrapContext) {
    -    let scause = scause::read();
    -    let stval = stval::read();
    -    match scause.cause() {
    -        Trap::Interrupt(Interrupt::SupervisorExternal) => {
    -            crate::board::irq_handler();
    -        },
    -        Trap::Interrupt(Interrupt::SupervisorTimer) => {
    -            set_next_trigger();
    -            check_timer();
    -            // do not schedule now
    -        },
    -        _ => {
    -            panic!(
    -                "Unsupported trap from kernel: {:?}, stval = {:#x}!",
    -                scause.cause(),
    -                stval
    -            );
    -        },
    -    }
    -}
    -
    -pub use context::TrapContext;
    -
    -
    - \ No newline at end of file diff --git a/public/main/storage.js b/public/main/storage.js deleted file mode 100644 index c090e1f3..00000000 --- a/public/main/storage.js +++ /dev/null @@ -1 +0,0 @@ -var darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");window.mainTheme=document.getElementById("mainThemeStyle");var settingsDataset=(function(){var settingsElement=document.getElementById("default-settings");if(settingsElement===null){return null}var dataset=settingsElement.dataset;if(dataset===undefined){return null}return dataset})();function getSettingValue(settingName){var current=getCurrentValue('rustdoc-'+settingName);if(current!==null){return current}if(settingsDataset!==null){var def=settingsDataset[settingName.replace(/-/g,'_')];if(def!==undefined){return def}}return null}var localStoredTheme=getSettingValue("theme");var savedHref=[];function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(!elem||!elem.classList){return}elem.classList.add(className)}function removeClass(elem,className){if(!elem||!elem.classList){return}elem.classList.remove(className)}function onEach(arr,func,reversed){if(arr&&arr.length>0&&func){var length=arr.length;var i;if(reversed){for(i=length-1;i>=0;--i){if(func(arr[i])){return true}}}else{for(i=0;i=0){updateLocalStorage("rustdoc-preferred-dark-theme",localStoredTheme)}updateSystemTheme()}else{switchTheme(window.currentTheme,window.mainTheme,getSettingValue("theme")||"light",false)} \ No newline at end of file diff --git a/public/main/toggle-minus.svg b/public/main/toggle-minus.svg deleted file mode 100644 index 73154788..00000000 --- a/public/main/toggle-minus.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/main/toggle-plus.svg b/public/main/toggle-plus.svg deleted file mode 100644 index 08b17033..00000000 --- a/public/main/toggle-plus.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/main/wheel.svg b/public/main/wheel.svg deleted file mode 100644 index 01da3b24..00000000 --- a/public/main/wheel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file