From d2d2ba7c6602e73dc2e3dbd0aa4215e4c412a688 Mon Sep 17 00:00:00 2001 From: johannst Date: Wed, 2 Jun 2021 22:38:57 +0000 Subject: deploy: d2e2063cb2b5a82709e9c5188602a9fc0f7dadbd --- .lock | 0 .nojekyll | 0 COPYRIGHT.txt | 45 +++ FiraSans-LICENSE.txt | 94 ++++++ FiraSans-Medium.woff | Bin 0 -> 186824 bytes FiraSans-Medium.woff2 | Bin 0 -> 132780 bytes FiraSans-Regular.woff | Bin 0 -> 183268 bytes FiraSans-Regular.woff2 | Bin 0 -> 129188 bytes LICENSE-APACHE.txt | 201 +++++++++++++ LICENSE-MIT.txt | 23 ++ SourceCodePro-LICENSE.txt | 93 ++++++ SourceCodePro-Regular.woff | Bin 0 -> 55472 bytes SourceCodePro-Semibold.woff | Bin 0 -> 55360 bytes SourceSerifPro-Bold.ttf.woff | Bin 0 -> 93248 bytes SourceSerifPro-It.ttf.woff | Bin 0 -> 36200 bytes SourceSerifPro-LICENSE.md | 93 ++++++ SourceSerifPro-Regular.ttf.woff | Bin 0 -> 88596 bytes ayu.css | 1 + brush.svg | 1 + crates.js | 1 + dark.css | 1 + down-arrow.svg | 1 + favicon-16x16.png | Bin 0 -> 2214 bytes favicon-32x32.png | Bin 0 -> 2919 bytes favicon.svg | 24 ++ implementors/core/convert/trait.AsMut.js | 3 + implementors/core/convert/trait.AsRef.js | 3 + implementors/core/default/trait.Default.js | 3 + implementors/core/fmt/trait.Debug.js | 3 + implementors/core/fmt/trait.Display.js | 3 + implementors/core/marker/trait.Freeze.js | 3 + implementors/core/marker/trait.Send.js | 3 + implementors/core/marker/trait.Sync.js | 3 + implementors/core/marker/trait.Unpin.js | 3 + implementors/core/ops/drop/trait.Drop.js | 3 + implementors/std/panic/trait.RefUnwindSafe.js | 3 + implementors/std/panic/trait.UnwindSafe.js | 3 + index.html | 1 + kvm_rs/all.html | 7 + kvm_rs/index.html | 14 + kvm_rs/kvm/index.html | 8 + kvm_rs/kvm/sidebar-items.js | 1 + kvm_rs/kvm/struct.Kvm.html | 20 ++ kvm_rs/kvm_sys/index.html | 7 + kvm_rs/kvm_sys/sidebar-items.js | 1 + kvm_rs/kvm_sys/struct.kvm_dtable.html | 23 ++ kvm_rs/kvm_sys/struct.kvm_regs.html | 38 +++ kvm_rs/kvm_sys/struct.kvm_segment.html | 32 ++ kvm_rs/kvm_sys/struct.kvm_sregs.html | 38 +++ kvm_rs/sidebar-items.js | 1 + kvm_rs/struct.PhysAddr.html | 15 + kvm_rs/struct.UserMem.html | 29 ++ kvm_rs/vcpu/enum.KvmExit.html | 25 ++ kvm_rs/vcpu/index.html | 10 + kvm_rs/vcpu/sidebar-items.js | 1 + kvm_rs/vcpu/struct.Vcpu.html | 27 ++ kvm_rs/vm/index.html | 8 + kvm_rs/vm/sidebar-items.js | 1 + kvm_rs/vm/struct.Vm.html | 26 ++ kvm_rs/x86_64/constant.CR0_AM.html | 8 + kvm_rs/x86_64/constant.CR0_CD.html | 6 + kvm_rs/x86_64/constant.CR0_EM.html | 8 + kvm_rs/x86_64/constant.CR0_ET.html | 6 + kvm_rs/x86_64/constant.CR0_MP.html | 6 + kvm_rs/x86_64/constant.CR0_NE.html | 6 + kvm_rs/x86_64/constant.CR0_NW.html | 6 + kvm_rs/x86_64/constant.CR0_PE.html | 8 + kvm_rs/x86_64/constant.CR0_PG.html | 7 + kvm_rs/x86_64/constant.CR0_TS.html | 6 + kvm_rs/x86_64/constant.CR0_WP.html | 7 + kvm_rs/x86_64/constant.CR3_PAGE_BASE_MASK.html | 6 + kvm_rs/x86_64/constant.CR3_PCD.html | 6 + kvm_rs/x86_64/constant.CR3_PWT.html | 6 + kvm_rs/x86_64/constant.CR4_LA57.html | 8 + kvm_rs/x86_64/constant.CR4_PAE.html | 8 + kvm_rs/x86_64/constant.EFER_LMA.html | 7 + kvm_rs/x86_64/constant.EFER_LME.html | 7 + kvm_rs/x86_64/constant.MSR_EFER.html | 8 + kvm_rs/x86_64/constant.PAGE_ENTRY_PRESENT.html | 6 + kvm_rs/x86_64/constant.PAGE_RENTRY_RW.html | 7 + kvm_rs/x86_64/constant.RFLAGS_AC.html | 6 + kvm_rs/x86_64/constant.RFLAGS_AF.html | 6 + kvm_rs/x86_64/constant.RFLAGS_CF.html | 6 + kvm_rs/x86_64/constant.RFLAGS_DF.html | 6 + kvm_rs/x86_64/constant.RFLAGS_IF.html | 6 + kvm_rs/x86_64/constant.RFLAGS_IOPL.html | 6 + kvm_rs/x86_64/constant.RFLAGS_OF.html | 6 + kvm_rs/x86_64/constant.RFLAGS_PF.html | 6 + kvm_rs/x86_64/constant.RFLAGS_SF.html | 6 + kvm_rs/x86_64/constant.RFLAGS_ZF.html | 6 + kvm_rs/x86_64/constant.SEG_SELECTOR_INDEX.html | 8 + kvm_rs/x86_64/constant.SEG_SELECTOR_RPL.html | 8 + kvm_rs/x86_64/constant.SEG_SELECTOR_TI.html | 10 + kvm_rs/x86_64/fn.rflags_ac.html | 5 + kvm_rs/x86_64/fn.rflags_af.html | 5 + kvm_rs/x86_64/fn.rflags_cf.html | 5 + kvm_rs/x86_64/fn.rflags_df.html | 5 + kvm_rs/x86_64/fn.rflags_if.html | 5 + kvm_rs/x86_64/fn.rflags_iopl.html | 5 + kvm_rs/x86_64/fn.rflags_of.html | 5 + kvm_rs/x86_64/fn.rflags_pf.html | 5 + kvm_rs/x86_64/fn.rflags_sf.html | 5 + kvm_rs/x86_64/fn.rflags_zf.html | 5 + kvm_rs/x86_64/fn.seg_selector_index.html | 5 + kvm_rs/x86_64/fn.seg_selector_rpl.html | 5 + kvm_rs/x86_64/fn.seg_selector_ti.html | 5 + kvm_rs/x86_64/index.html | 42 +++ kvm_rs/x86_64/sidebar-items.js | 1 + light.css | 1 + main.js | 8 + normalize.css | 2 + noscript.css | 1 + rust-logo.png | Bin 0 -> 5758 bytes rustdoc.css | 1 + search-index.js | 4 + settings.css | 1 + settings.html | 7 + settings.js | 1 + source-files.js | 3 + source-script.js | 1 + src/kvm_rs/fmt.rs.html | 265 ++++++++++++++++ src/kvm_rs/kvm.rs.html | 111 +++++++ src/kvm_rs/kvm_sys.rs.html | 401 +++++++++++++++++++++++++ src/kvm_rs/lib.rs.html | 337 +++++++++++++++++++++ src/kvm_rs/vcpu.rs.html | 279 +++++++++++++++++ src/kvm_rs/vm.rs.html | 145 +++++++++ src/kvm_rs/x86_64.rs.html | 315 +++++++++++++++++++ storage.js | 1 + theme.js | 1 + wheel.svg | 1 + 130 files changed, 3170 insertions(+) create mode 100755 .lock create mode 100644 .nojekyll create mode 100644 COPYRIGHT.txt create mode 100644 FiraSans-LICENSE.txt create mode 100644 FiraSans-Medium.woff create mode 100644 FiraSans-Medium.woff2 create mode 100644 FiraSans-Regular.woff create mode 100644 FiraSans-Regular.woff2 create mode 100644 LICENSE-APACHE.txt create mode 100644 LICENSE-MIT.txt create mode 100644 SourceCodePro-LICENSE.txt create mode 100644 SourceCodePro-Regular.woff create mode 100644 SourceCodePro-Semibold.woff create mode 100644 SourceSerifPro-Bold.ttf.woff create mode 100644 SourceSerifPro-It.ttf.woff create mode 100644 SourceSerifPro-LICENSE.md create mode 100644 SourceSerifPro-Regular.ttf.woff create mode 100644 ayu.css create mode 100644 brush.svg create mode 100644 crates.js create mode 100644 dark.css create mode 100644 down-arrow.svg create mode 100644 favicon-16x16.png create mode 100644 favicon-32x32.png create mode 100644 favicon.svg create mode 100644 implementors/core/convert/trait.AsMut.js create mode 100644 implementors/core/convert/trait.AsRef.js create mode 100644 implementors/core/default/trait.Default.js create mode 100644 implementors/core/fmt/trait.Debug.js create mode 100644 implementors/core/fmt/trait.Display.js create mode 100644 implementors/core/marker/trait.Freeze.js create mode 100644 implementors/core/marker/trait.Send.js create mode 100644 implementors/core/marker/trait.Sync.js create mode 100644 implementors/core/marker/trait.Unpin.js create mode 100644 implementors/core/ops/drop/trait.Drop.js create mode 100644 implementors/std/panic/trait.RefUnwindSafe.js create mode 100644 implementors/std/panic/trait.UnwindSafe.js create mode 100644 index.html create mode 100644 kvm_rs/all.html create mode 100644 kvm_rs/index.html create mode 100644 kvm_rs/kvm/index.html create mode 100644 kvm_rs/kvm/sidebar-items.js create mode 100644 kvm_rs/kvm/struct.Kvm.html create mode 100644 kvm_rs/kvm_sys/index.html create mode 100644 kvm_rs/kvm_sys/sidebar-items.js create mode 100644 kvm_rs/kvm_sys/struct.kvm_dtable.html create mode 100644 kvm_rs/kvm_sys/struct.kvm_regs.html create mode 100644 kvm_rs/kvm_sys/struct.kvm_segment.html create mode 100644 kvm_rs/kvm_sys/struct.kvm_sregs.html create mode 100644 kvm_rs/sidebar-items.js create mode 100644 kvm_rs/struct.PhysAddr.html create mode 100644 kvm_rs/struct.UserMem.html create mode 100644 kvm_rs/vcpu/enum.KvmExit.html create mode 100644 kvm_rs/vcpu/index.html create mode 100644 kvm_rs/vcpu/sidebar-items.js create mode 100644 kvm_rs/vcpu/struct.Vcpu.html create mode 100644 kvm_rs/vm/index.html create mode 100644 kvm_rs/vm/sidebar-items.js create mode 100644 kvm_rs/vm/struct.Vm.html create mode 100644 kvm_rs/x86_64/constant.CR0_AM.html create mode 100644 kvm_rs/x86_64/constant.CR0_CD.html create mode 100644 kvm_rs/x86_64/constant.CR0_EM.html create mode 100644 kvm_rs/x86_64/constant.CR0_ET.html create mode 100644 kvm_rs/x86_64/constant.CR0_MP.html create mode 100644 kvm_rs/x86_64/constant.CR0_NE.html create mode 100644 kvm_rs/x86_64/constant.CR0_NW.html create mode 100644 kvm_rs/x86_64/constant.CR0_PE.html create mode 100644 kvm_rs/x86_64/constant.CR0_PG.html create mode 100644 kvm_rs/x86_64/constant.CR0_TS.html create mode 100644 kvm_rs/x86_64/constant.CR0_WP.html create mode 100644 kvm_rs/x86_64/constant.CR3_PAGE_BASE_MASK.html create mode 100644 kvm_rs/x86_64/constant.CR3_PCD.html create mode 100644 kvm_rs/x86_64/constant.CR3_PWT.html create mode 100644 kvm_rs/x86_64/constant.CR4_LA57.html create mode 100644 kvm_rs/x86_64/constant.CR4_PAE.html create mode 100644 kvm_rs/x86_64/constant.EFER_LMA.html create mode 100644 kvm_rs/x86_64/constant.EFER_LME.html create mode 100644 kvm_rs/x86_64/constant.MSR_EFER.html create mode 100644 kvm_rs/x86_64/constant.PAGE_ENTRY_PRESENT.html create mode 100644 kvm_rs/x86_64/constant.PAGE_RENTRY_RW.html create mode 100644 kvm_rs/x86_64/constant.RFLAGS_AC.html create mode 100644 kvm_rs/x86_64/constant.RFLAGS_AF.html create mode 100644 kvm_rs/x86_64/constant.RFLAGS_CF.html create mode 100644 kvm_rs/x86_64/constant.RFLAGS_DF.html create mode 100644 kvm_rs/x86_64/constant.RFLAGS_IF.html create mode 100644 kvm_rs/x86_64/constant.RFLAGS_IOPL.html create mode 100644 kvm_rs/x86_64/constant.RFLAGS_OF.html create mode 100644 kvm_rs/x86_64/constant.RFLAGS_PF.html create mode 100644 kvm_rs/x86_64/constant.RFLAGS_SF.html create mode 100644 kvm_rs/x86_64/constant.RFLAGS_ZF.html create mode 100644 kvm_rs/x86_64/constant.SEG_SELECTOR_INDEX.html create mode 100644 kvm_rs/x86_64/constant.SEG_SELECTOR_RPL.html create mode 100644 kvm_rs/x86_64/constant.SEG_SELECTOR_TI.html create mode 100644 kvm_rs/x86_64/fn.rflags_ac.html create mode 100644 kvm_rs/x86_64/fn.rflags_af.html create mode 100644 kvm_rs/x86_64/fn.rflags_cf.html create mode 100644 kvm_rs/x86_64/fn.rflags_df.html create mode 100644 kvm_rs/x86_64/fn.rflags_if.html create mode 100644 kvm_rs/x86_64/fn.rflags_iopl.html create mode 100644 kvm_rs/x86_64/fn.rflags_of.html create mode 100644 kvm_rs/x86_64/fn.rflags_pf.html create mode 100644 kvm_rs/x86_64/fn.rflags_sf.html create mode 100644 kvm_rs/x86_64/fn.rflags_zf.html create mode 100644 kvm_rs/x86_64/fn.seg_selector_index.html create mode 100644 kvm_rs/x86_64/fn.seg_selector_rpl.html create mode 100644 kvm_rs/x86_64/fn.seg_selector_ti.html create mode 100644 kvm_rs/x86_64/index.html create mode 100644 kvm_rs/x86_64/sidebar-items.js create mode 100644 light.css create mode 100644 main.js create mode 100644 normalize.css create mode 100644 noscript.css create mode 100644 rust-logo.png create mode 100644 rustdoc.css create mode 100644 search-index.js create mode 100644 settings.css create mode 100644 settings.html create mode 100644 settings.js create mode 100644 source-files.js create mode 100644 source-script.js create mode 100644 src/kvm_rs/fmt.rs.html create mode 100644 src/kvm_rs/kvm.rs.html create mode 100644 src/kvm_rs/kvm_sys.rs.html create mode 100644 src/kvm_rs/lib.rs.html create mode 100644 src/kvm_rs/vcpu.rs.html create mode 100644 src/kvm_rs/vm.rs.html create mode 100644 src/kvm_rs/x86_64.rs.html create mode 100644 storage.js create mode 100644 theme.js create mode 100644 wheel.svg diff --git a/.lock b/.lock new file mode 100755 index 0000000..e69de29 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt new file mode 100644 index 0000000..af77776 --- /dev/null +++ b/COPYRIGHT.txt @@ -0,0 +1,45 @@ +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.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.woff, SourceCodePro-Semibold.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 Pro (SourceSerifPro-Regular.ttf.woff, + SourceSerifPro-Bold.ttf.woff, SourceSerifPro-It.ttf.woff): + + Copyright 2014 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 SourceSerifPro-LICENSE.txt. + +This copyright file is intended to be distributed with rustdoc output. diff --git a/FiraSans-LICENSE.txt b/FiraSans-LICENSE.txt new file mode 100644 index 0000000..d444ea9 --- /dev/null +++ b/FiraSans-LICENSE.txt @@ -0,0 +1,94 @@ +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/FiraSans-Medium.woff b/FiraSans-Medium.woff new file mode 100644 index 0000000..7d742c5 Binary files /dev/null and b/FiraSans-Medium.woff differ diff --git a/FiraSans-Medium.woff2 b/FiraSans-Medium.woff2 new file mode 100644 index 0000000..7a1e5fc Binary files /dev/null and b/FiraSans-Medium.woff2 differ diff --git a/FiraSans-Regular.woff b/FiraSans-Regular.woff new file mode 100644 index 0000000..d8e0363 Binary files /dev/null and b/FiraSans-Regular.woff differ diff --git a/FiraSans-Regular.woff2 b/FiraSans-Regular.woff2 new file mode 100644 index 0000000..e766e06 Binary files /dev/null and b/FiraSans-Regular.woff2 differ diff --git a/LICENSE-APACHE.txt b/LICENSE-APACHE.txt new file mode 100644 index 0000000..16fe87b --- /dev/null +++ b/LICENSE-APACHE.txt @@ -0,0 +1,201 @@ + 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/LICENSE-MIT.txt b/LICENSE-MIT.txt new file mode 100644 index 0000000..31aa793 --- /dev/null +++ b/LICENSE-MIT.txt @@ -0,0 +1,23 @@ +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/SourceCodePro-LICENSE.txt b/SourceCodePro-LICENSE.txt new file mode 100644 index 0000000..0754257 --- /dev/null +++ b/SourceCodePro-LICENSE.txt @@ -0,0 +1,93 @@ +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/SourceCodePro-Regular.woff b/SourceCodePro-Regular.woff new file mode 100644 index 0000000..5576670 Binary files /dev/null and b/SourceCodePro-Regular.woff differ diff --git a/SourceCodePro-Semibold.woff b/SourceCodePro-Semibold.woff new file mode 100644 index 0000000..ca972a1 Binary files /dev/null and b/SourceCodePro-Semibold.woff differ diff --git a/SourceSerifPro-Bold.ttf.woff b/SourceSerifPro-Bold.ttf.woff new file mode 100644 index 0000000..ca25431 Binary files /dev/null and b/SourceSerifPro-Bold.ttf.woff differ diff --git a/SourceSerifPro-It.ttf.woff b/SourceSerifPro-It.ttf.woff new file mode 100644 index 0000000..a287bbe Binary files /dev/null and b/SourceSerifPro-It.ttf.woff differ diff --git a/SourceSerifPro-LICENSE.md b/SourceSerifPro-LICENSE.md new file mode 100644 index 0000000..22cb755 --- /dev/null +++ b/SourceSerifPro-LICENSE.md @@ -0,0 +1,93 @@ +Copyright 2014-2018 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/SourceSerifPro-Regular.ttf.woff b/SourceSerifPro-Regular.ttf.woff new file mode 100644 index 0000000..a3d55cf Binary files /dev/null and b/SourceSerifPro-Regular.ttf.woff differ diff --git a/ayu.css b/ayu.css new file mode 100644 index 0000000..77e6843 --- /dev/null +++ b/ayu.css @@ -0,0 +1 @@ + body{background-color:#0f1419;color:#c5c5c5;}h1,h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod){color:white;}h1.fqn{border-bottom-color:#5c6773;}h1.fqn a{color:#fff;}h2,h3:not(.impl):not(.method):not(.type):not(.tymethod){border-bottom-color:#5c6773;}h4:not(.method):not(.type):not(.tymethod):not(.associatedconstant){border:none;}.in-band{background-color:#0f1419;}.invisible{background:rgba(0,0,0,0);}code{color:#ffb454;}h3>code,h4>code,h5>code{color:#e6e1cf;}pre>code{color:#e6e1cf;}span code{color:#e6e1cf;}.docblock a>code{color:#39AFD7 !important;}.docblock code,.docblock-short code{background-color:#191f26;}pre{color:#e6e1cf;background-color:#191f26;}.sidebar{background-color:#14191f;}.logo-container.rust-logo>img{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 transparent;}.sidebar{scrollbar-color:#5c6773 transparent;}::-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:#0f1419;}.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{border-bottom-color:#5c6773;}.docblock table,.docblock table td,.docblock table th{border-color:#5c6773;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#c5c5c5;}.content .highlighted{color:#000 !important;background-color:#c6afb3;}.content .highlighted a,.content .highlighted span{color:#000 !important;}.content .highlighted{background-color:#c6afb3;}.search-results a{color:#0096cf;}.search-results a span.desc{color:#c5c5c5;}.content .item-info::before{color:#ccc;}.content span.foreigntype,.content a.foreigntype{color:#ef57ff;}.content span.union,.content a.union{color:#98a01c;}.content span.constant,.content a.constant,.content span.static,.content a.static{color:#6380a0;}.content span.primitive,.content a.primitive{color:#32889b;}.content span.traitalias,.content a.traitalias{color:#57d399;}.content span.keyword,.content a.keyword{color:#de5249;}.content span.externcrate,.content span.mod,.content a.mod{color:#acccf9;}.content span.struct,.content a.struct{color:#ffa0a5;}.content span.enum,.content a.enum{color:#99e0c9;}.content span.trait,.content a.trait{color:#39AFD7;}.content span.type,.content a.type{color:#cfbcf5;}.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:#c5c5c5;}.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow),.docblock-short a:not(.srclink):not(.test-arrow),.item-info a,#help a{color:#39AFD7;}.collapse-toggle{color:#999;}#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;}.search-focus:disabled{color:#929292;}.module-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>div>span{border-bottom-color:#5c6773;}.since{color:grey;}tr.result span.primitive::after,tr.result span.keyword::after{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{color:#999;}:target>code,:target>.in-band{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;}#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;}.content .highlighted.mod,.content .highlighted.externcrate{}.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 .highlighted.trait{}.content span.struct,.content a.struct,.block a.current.struct{}#titles>button:hover,#titles>button.selected{}.content .highlighted.traitalias{}.content span.type,.content a.type,.block a.current.type{}.content span.union,.content a.union,.block a.current.union{}.content .highlighted.foreigntype{}pre.rust .lifetime{}.content .highlighted.primitive{}.content .highlighted.constant,.content .highlighted.static{}.stab.unstable{}.content .highlighted.fn,.content .highlighted.method,.content .highlighted.tymethod{}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 .highlighted.enum{}.content .highlighted.struct{}.content .highlighted.keyword{}.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 .highlighted.attr,.content .highlighted.derive,.content .highlighted.macro{}.stab.portability{}.content .highlighted.union{}.content span.primitive,.content a.primitive,.block a.current.primitive{}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{}.content .highlighted.type{}pre.rust .kw-2,pre.rust .prelude-ty{}.content span.trait,.content a.trait,.block a.current.trait{}@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);}#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 td span.alias{color:#c5c5c5;}.search-results td 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;} \ No newline at end of file diff --git a/brush.svg b/brush.svg new file mode 100644 index 0000000..ea266e8 --- /dev/null +++ b/brush.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/crates.js b/crates.js new file mode 100644 index 0000000..ad409b0 --- /dev/null +++ b/crates.js @@ -0,0 +1 @@ +window.ALL_CRATES = ["kvm_rs"]; \ No newline at end of file diff --git a/dark.css b/dark.css new file mode 100644 index 0000000..8ee9c65 --- /dev/null +++ b/dark.css @@ -0,0 +1 @@ +body{background-color:#353535;color:#ddd;}h1,h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod){color:#ddd;}h1.fqn{border-bottom-color:#d2d2d2;}h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod){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{background-color:#2A2A2A;}.sidebar{background-color:#505050;}.logo-container.rust-logo>img{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) transparent;}::-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:#353535;}.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{border-bottom-color:#DDD;}.docblock table,.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#ddd;}.content .highlighted{color:#eee !important;background-color:#616161;}.content .highlighted a,.content .highlighted span{color:#eee !important;}.content .highlighted.trait{background-color:#013191;}.content .highlighted.traitalias{background-color:#013191;}.content .highlighted.mod,.content .highlighted.externcrate{background-color:#afc6e4;}.content .highlighted.mod{background-color:#803a1b;}.content .highlighted.externcrate{background-color:#396bac;}.content .highlighted.enum{background-color:#5b4e68;}.content .highlighted.struct{background-color:#194e9f;}.content .highlighted.union{background-color:#b7bd49;}.content .highlighted.fn,.content .highlighted.method,.content .highlighted.tymethod{background-color:#4950ed;}.content .highlighted.type{background-color:#38902c;}.content .highlighted.foreigntype{background-color:#b200d6;}.content .highlighted.attr,.content .highlighted.derive,.content .highlighted.macro{background-color:#217d1c;}.content .highlighted.constant,.content .highlighted.static{background-color:#0063cc;}.content .highlighted.primitive{background-color:#00708a;}.content .highlighted.keyword{background-color:#884719;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#82b089;}.content span.struct,.content a.struct,.block a.current.struct{color:#2dbfb8;}.content span.type,.content a.type,.block a.current.type{color:#ff7f00;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#dd7de8;}.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:#a6ae37;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#82a5c9;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#43aec7;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#bda000;}.content span.trait,.content a.trait,.block a.current.trait{color:#b78cf2;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#b397da;}.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:#de5249;}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:#ddd;}.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow),.docblock-short a:not(.srclink):not(.test-arrow),.item-info a,#help a{color:#D2991D;}a.test-arrow{color:#dedede;}.collapse-toggle{color:#999;}#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;}.search-focus:disabled{background-color:#c5c4c4;}#crate-search+.search-input:focus{box-shadow:0 0 8px 4px #078dd8;}.module-item .stab{color:#ddd;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;color:#2f2f2f;}.stab.deprecated{background:#F3DFFF;border-color:#7F0087;color:#2f2f2f;}.stab.portability{background:#C4ECFF;border-color:#7BA5DB;color:#2f2f2f;}.stab.portability>code{background:none;}#help>div{background:#4d4d4d;border-color:#bfbfbf;}#help>div>span{border-bottom-color:#bfbfbf;}#help dt{border-color:#bfbfbf;background:rgba(0,0,0,0);}.since{color:grey;}tr.result span.primitive::after,tr.result span.keyword::after{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{color:#999;}:target>code,:target>.in-band{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;}#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;}#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 td span.alias{color:#fff;}.search-results td 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;} \ No newline at end of file diff --git a/down-arrow.svg b/down-arrow.svg new file mode 100644 index 0000000..35437e7 --- /dev/null +++ b/down-arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/favicon-16x16.png b/favicon-16x16.png new file mode 100644 index 0000000..7cfe6c1 Binary files /dev/null and b/favicon-16x16.png differ diff --git a/favicon-32x32.png b/favicon-32x32.png new file mode 100644 index 0000000..5109c1d Binary files /dev/null and b/favicon-32x32.png differ diff --git a/favicon.svg b/favicon.svg new file mode 100644 index 0000000..8b34b51 --- /dev/null +++ b/favicon.svg @@ -0,0 +1,24 @@ + + + + + diff --git a/implementors/core/convert/trait.AsMut.js b/implementors/core/convert/trait.AsMut.js new file mode 100644 index 0000000..3fe38fe --- /dev/null +++ b/implementors/core/convert/trait.AsMut.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["kvm_rs"] = [{"text":"impl AsMut<[u8]> for UserMem","synthetic":false,"types":["kvm_rs::UserMem"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/convert/trait.AsRef.js b/implementors/core/convert/trait.AsRef.js new file mode 100644 index 0000000..4ae956c --- /dev/null +++ b/implementors/core/convert/trait.AsRef.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["kvm_rs"] = [{"text":"impl AsRef<[u8]> for UserMem","synthetic":false,"types":["kvm_rs::UserMem"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/default/trait.Default.js b/implementors/core/default/trait.Default.js new file mode 100644 index 0000000..7063397 --- /dev/null +++ b/implementors/core/default/trait.Default.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["kvm_rs"] = [{"text":"impl Default for kvm_regs","synthetic":false,"types":["kvm_rs::kvm_sys::kvm_regs"]},{"text":"impl Default for kvm_segment","synthetic":false,"types":["kvm_rs::kvm_sys::kvm_segment"]},{"text":"impl Default for kvm_dtable","synthetic":false,"types":["kvm_rs::kvm_sys::kvm_dtable"]},{"text":"impl Default for kvm_sregs","synthetic":false,"types":["kvm_rs::kvm_sys::kvm_sregs"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/fmt/trait.Debug.js b/implementors/core/fmt/trait.Debug.js new file mode 100644 index 0000000..201610b --- /dev/null +++ b/implementors/core/fmt/trait.Debug.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["kvm_rs"] = [{"text":"impl Debug for kvm_regs","synthetic":false,"types":["kvm_rs::kvm_sys::kvm_regs"]},{"text":"impl Debug for kvm_segment","synthetic":false,"types":["kvm_rs::kvm_sys::kvm_segment"]},{"text":"impl Debug for kvm_dtable","synthetic":false,"types":["kvm_rs::kvm_sys::kvm_dtable"]},{"text":"impl Debug for kvm_sregs","synthetic":false,"types":["kvm_rs::kvm_sys::kvm_sregs"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/fmt/trait.Display.js b/implementors/core/fmt/trait.Display.js new file mode 100644 index 0000000..d58110f --- /dev/null +++ b/implementors/core/fmt/trait.Display.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["kvm_rs"] = [{"text":"impl Display for kvm_regs","synthetic":false,"types":["kvm_rs::kvm_sys::kvm_regs"]},{"text":"impl Display for kvm_segment","synthetic":false,"types":["kvm_rs::kvm_sys::kvm_segment"]},{"text":"impl Display for kvm_dtable","synthetic":false,"types":["kvm_rs::kvm_sys::kvm_dtable"]},{"text":"impl Display for kvm_sregs","synthetic":false,"types":["kvm_rs::kvm_sys::kvm_sregs"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Freeze.js b/implementors/core/marker/trait.Freeze.js new file mode 100644 index 0000000..aa655ad --- /dev/null +++ b/implementors/core/marker/trait.Freeze.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["kvm_rs"] = [{"text":"impl Freeze for Kvm","synthetic":true,"types":["kvm_rs::kvm::Kvm"]},{"text":"impl Freeze for kvm_regs","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_regs"]},{"text":"impl Freeze for kvm_segment","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_segment"]},{"text":"impl Freeze for kvm_dtable","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_dtable"]},{"text":"impl Freeze for kvm_sregs","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_sregs"]},{"text":"impl<'cpu> Freeze for KvmExit<'cpu>","synthetic":true,"types":["kvm_rs::vcpu::KvmExit"]},{"text":"impl Freeze for Vcpu","synthetic":true,"types":["kvm_rs::vcpu::Vcpu"]},{"text":"impl Freeze for Vm","synthetic":true,"types":["kvm_rs::vm::Vm"]},{"text":"impl Freeze for PhysAddr","synthetic":true,"types":["kvm_rs::PhysAddr"]},{"text":"impl Freeze for UserMem","synthetic":true,"types":["kvm_rs::UserMem"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Send.js b/implementors/core/marker/trait.Send.js new file mode 100644 index 0000000..3e4987d --- /dev/null +++ b/implementors/core/marker/trait.Send.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["kvm_rs"] = [{"text":"impl Send for Kvm","synthetic":true,"types":["kvm_rs::kvm::Kvm"]},{"text":"impl Send for kvm_regs","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_regs"]},{"text":"impl Send for kvm_segment","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_segment"]},{"text":"impl Send for kvm_dtable","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_dtable"]},{"text":"impl Send for kvm_sregs","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_sregs"]},{"text":"impl<'cpu> Send for KvmExit<'cpu>","synthetic":true,"types":["kvm_rs::vcpu::KvmExit"]},{"text":"impl !Send for Vcpu","synthetic":true,"types":["kvm_rs::vcpu::Vcpu"]},{"text":"impl Send for Vm","synthetic":true,"types":["kvm_rs::vm::Vm"]},{"text":"impl Send for PhysAddr","synthetic":true,"types":["kvm_rs::PhysAddr"]},{"text":"impl !Send for UserMem","synthetic":true,"types":["kvm_rs::UserMem"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Sync.js b/implementors/core/marker/trait.Sync.js new file mode 100644 index 0000000..fa0c39d --- /dev/null +++ b/implementors/core/marker/trait.Sync.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["kvm_rs"] = [{"text":"impl Sync for Kvm","synthetic":true,"types":["kvm_rs::kvm::Kvm"]},{"text":"impl Sync for kvm_regs","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_regs"]},{"text":"impl Sync for kvm_segment","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_segment"]},{"text":"impl Sync for kvm_dtable","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_dtable"]},{"text":"impl Sync for kvm_sregs","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_sregs"]},{"text":"impl<'cpu> Sync for KvmExit<'cpu>","synthetic":true,"types":["kvm_rs::vcpu::KvmExit"]},{"text":"impl !Sync for Vcpu","synthetic":true,"types":["kvm_rs::vcpu::Vcpu"]},{"text":"impl Sync for Vm","synthetic":true,"types":["kvm_rs::vm::Vm"]},{"text":"impl Sync for PhysAddr","synthetic":true,"types":["kvm_rs::PhysAddr"]},{"text":"impl !Sync for UserMem","synthetic":true,"types":["kvm_rs::UserMem"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/marker/trait.Unpin.js b/implementors/core/marker/trait.Unpin.js new file mode 100644 index 0000000..dca41b3 --- /dev/null +++ b/implementors/core/marker/trait.Unpin.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["kvm_rs"] = [{"text":"impl Unpin for Kvm","synthetic":true,"types":["kvm_rs::kvm::Kvm"]},{"text":"impl Unpin for kvm_regs","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_regs"]},{"text":"impl Unpin for kvm_segment","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_segment"]},{"text":"impl Unpin for kvm_dtable","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_dtable"]},{"text":"impl Unpin for kvm_sregs","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_sregs"]},{"text":"impl<'cpu> Unpin for KvmExit<'cpu>","synthetic":true,"types":["kvm_rs::vcpu::KvmExit"]},{"text":"impl Unpin for Vcpu","synthetic":true,"types":["kvm_rs::vcpu::Vcpu"]},{"text":"impl Unpin for Vm","synthetic":true,"types":["kvm_rs::vm::Vm"]},{"text":"impl Unpin for PhysAddr","synthetic":true,"types":["kvm_rs::PhysAddr"]},{"text":"impl Unpin for UserMem","synthetic":true,"types":["kvm_rs::UserMem"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/core/ops/drop/trait.Drop.js b/implementors/core/ops/drop/trait.Drop.js new file mode 100644 index 0000000..1a0b1c3 --- /dev/null +++ b/implementors/core/ops/drop/trait.Drop.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["kvm_rs"] = [{"text":"impl Drop for UserMem","synthetic":false,"types":["kvm_rs::UserMem"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/std/panic/trait.RefUnwindSafe.js b/implementors/std/panic/trait.RefUnwindSafe.js new file mode 100644 index 0000000..12b18a9 --- /dev/null +++ b/implementors/std/panic/trait.RefUnwindSafe.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["kvm_rs"] = [{"text":"impl RefUnwindSafe for Kvm","synthetic":true,"types":["kvm_rs::kvm::Kvm"]},{"text":"impl RefUnwindSafe for kvm_regs","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_regs"]},{"text":"impl RefUnwindSafe for kvm_segment","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_segment"]},{"text":"impl RefUnwindSafe for kvm_dtable","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_dtable"]},{"text":"impl RefUnwindSafe for kvm_sregs","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_sregs"]},{"text":"impl<'cpu> RefUnwindSafe for KvmExit<'cpu>","synthetic":true,"types":["kvm_rs::vcpu::KvmExit"]},{"text":"impl RefUnwindSafe for Vcpu","synthetic":true,"types":["kvm_rs::vcpu::Vcpu"]},{"text":"impl RefUnwindSafe for Vm","synthetic":true,"types":["kvm_rs::vm::Vm"]},{"text":"impl RefUnwindSafe for PhysAddr","synthetic":true,"types":["kvm_rs::PhysAddr"]},{"text":"impl RefUnwindSafe for UserMem","synthetic":true,"types":["kvm_rs::UserMem"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/implementors/std/panic/trait.UnwindSafe.js b/implementors/std/panic/trait.UnwindSafe.js new file mode 100644 index 0000000..bf57e7f --- /dev/null +++ b/implementors/std/panic/trait.UnwindSafe.js @@ -0,0 +1,3 @@ +(function() {var implementors = {}; +implementors["kvm_rs"] = [{"text":"impl UnwindSafe for Kvm","synthetic":true,"types":["kvm_rs::kvm::Kvm"]},{"text":"impl UnwindSafe for kvm_regs","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_regs"]},{"text":"impl UnwindSafe for kvm_segment","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_segment"]},{"text":"impl UnwindSafe for kvm_dtable","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_dtable"]},{"text":"impl UnwindSafe for kvm_sregs","synthetic":true,"types":["kvm_rs::kvm_sys::kvm_sregs"]},{"text":"impl<'cpu> !UnwindSafe for KvmExit<'cpu>","synthetic":true,"types":["kvm_rs::vcpu::KvmExit"]},{"text":"impl UnwindSafe for Vcpu","synthetic":true,"types":["kvm_rs::vcpu::Vcpu"]},{"text":"impl UnwindSafe for Vm","synthetic":true,"types":["kvm_rs::vm::Vm"]},{"text":"impl UnwindSafe for PhysAddr","synthetic":true,"types":["kvm_rs::PhysAddr"]},{"text":"impl UnwindSafe for UserMem","synthetic":true,"types":["kvm_rs::UserMem"]}]; +if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..b770a06 --- /dev/null +++ b/index.html @@ -0,0 +1 @@ + diff --git a/kvm_rs/all.html b/kvm_rs/all.html new file mode 100644 index 0000000..994beeb --- /dev/null +++ b/kvm_rs/all.html @@ -0,0 +1,7 @@ +List of all items in this crate + +

List of all items[] + +

Structs

Enums

Functions

Constants

+ \ No newline at end of file diff --git a/kvm_rs/index.html b/kvm_rs/index.html new file mode 100644 index 0000000..7917f4b --- /dev/null +++ b/kvm_rs/index.html @@ -0,0 +1,14 @@ +kvm_rs - Rust + +

Crate kvm_rs[][src]

Modules

+
kvm

KVM system ioctls.

+
kvm_sys

Definitions of the system header <linux/kvm.h>.

+
vcpu

VCPU system ioctls.

+
vm

VM system ioctls.

+
x86_64

x86_64 flags and bitfields.

+

Structs

+
PhysAddr

Strong type representing physical addresses.

+
UserMem

Wrapper to safely allocate memory for guest VMs.

+
+ \ No newline at end of file diff --git a/kvm_rs/kvm/index.html b/kvm_rs/kvm/index.html new file mode 100644 index 0000000..862e672 --- /dev/null +++ b/kvm_rs/kvm/index.html @@ -0,0 +1,8 @@ +kvm_rs::kvm - Rust + +

Module kvm_rs::kvm[][src]

KVM system ioctls.

+

Structs

+
Kvm

Wrapper for /dev/kvm ioctls.

+
+ \ No newline at end of file diff --git a/kvm_rs/kvm/sidebar-items.js b/kvm_rs/kvm/sidebar-items.js new file mode 100644 index 0000000..d00bbd2 --- /dev/null +++ b/kvm_rs/kvm/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"struct":[["Kvm","Wrapper for `/dev/kvm` ioctls."]]}); \ No newline at end of file diff --git a/kvm_rs/kvm/struct.Kvm.html b/kvm_rs/kvm/struct.Kvm.html new file mode 100644 index 0000000..abd62f2 --- /dev/null +++ b/kvm_rs/kvm/struct.Kvm.html @@ -0,0 +1,20 @@ +kvm_rs::kvm::Kvm - Rust + +

Struct kvm_rs::kvm::Kvm[][src]

pub struct Kvm { /* fields omitted */ }

Wrapper for /dev/kvm ioctls.

+

Representation of the file descriptor obtained by opening /dev/kvm. +This wrapper provides access to the system ioctls as described in KVM API.

+

Implementations

impl Kvm[src]

pub fn new() -> Result<Kvm>[src]

Open the /dev/kvm device.

+

pub fn create_vm(&self) -> Result<Vm>[src]

Create a new virtual machine with the KVM_CREATE_VM ioctl. +Returns a wrapper vm::Vm representing the VM.

+

Auto Trait Implementations

impl RefUnwindSafe for Kvm

impl Send for Kvm

impl Sync for Kvm

impl Unpin for Kvm

impl UnwindSafe for Kvm

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

+

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

+
+ \ No newline at end of file diff --git a/kvm_rs/kvm_sys/index.html b/kvm_rs/kvm_sys/index.html new file mode 100644 index 0000000..c96bef4 --- /dev/null +++ b/kvm_rs/kvm_sys/index.html @@ -0,0 +1,7 @@ +kvm_rs::kvm_sys - Rust + +

Module kvm_rs::kvm_sys[][src]

Definitions of the system header <linux/kvm.h>.

+

Structs

+
kvm_dtable
kvm_regs
kvm_segment
kvm_sregs
+ \ No newline at end of file diff --git a/kvm_rs/kvm_sys/sidebar-items.js b/kvm_rs/kvm_sys/sidebar-items.js new file mode 100644 index 0000000..383be42 --- /dev/null +++ b/kvm_rs/kvm_sys/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"struct":[["kvm_dtable",""],["kvm_regs",""],["kvm_segment",""],["kvm_sregs",""]]}); \ No newline at end of file diff --git a/kvm_rs/kvm_sys/struct.kvm_dtable.html b/kvm_rs/kvm_sys/struct.kvm_dtable.html new file mode 100644 index 0000000..600741d --- /dev/null +++ b/kvm_rs/kvm_sys/struct.kvm_dtable.html @@ -0,0 +1,23 @@ +kvm_rs::kvm_sys::kvm_dtable - Rust + +

Struct kvm_rs::kvm_sys::kvm_dtable[][src]

#[repr(C)]pub struct kvm_dtable {
+    pub base: u64,
+    pub limit: u16,
+    // some fields omitted
+}

+ Fields

base: u64limit: u16

Trait Implementations

impl Debug for kvm_dtable[src]

impl Default for kvm_dtable[src]

impl Display for kvm_dtable[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

+

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

+
+ \ No newline at end of file diff --git a/kvm_rs/kvm_sys/struct.kvm_regs.html b/kvm_rs/kvm_sys/struct.kvm_regs.html new file mode 100644 index 0000000..78e8adc --- /dev/null +++ b/kvm_rs/kvm_sys/struct.kvm_regs.html @@ -0,0 +1,38 @@ +kvm_rs::kvm_sys::kvm_regs - Rust + +

Struct kvm_rs::kvm_sys::kvm_regs[][src]

#[repr(C)]pub struct kvm_regs {
+    pub rax: u64,
+    pub rbx: u64,
+    pub rcx: u64,
+    pub rdx: u64,
+    pub rsi: u64,
+    pub rdi: u64,
+    pub rsp: u64,
+    pub rbp: u64,
+    pub r8: u64,
+    pub r9: u64,
+    pub r10: u64,
+    pub r11: u64,
+    pub r12: u64,
+    pub r13: u64,
+    pub r14: u64,
+    pub r15: u64,
+    pub rip: u64,
+    pub rflags: u64,
+}

+ Fields

rax: u64rbx: u64rcx: u64rdx: u64rsi: u64rdi: u64rsp: u64rbp: u64r8: u64r9: u64r10: u64r11: u64r12: u64r13: u64r14: u64r15: u64rip: u64rflags: u64

Trait Implementations

impl Debug for kvm_regs[src]

impl Default for kvm_regs[src]

impl Display for kvm_regs[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

+

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

+
+ \ No newline at end of file diff --git a/kvm_rs/kvm_sys/struct.kvm_segment.html b/kvm_rs/kvm_sys/struct.kvm_segment.html new file mode 100644 index 0000000..f7eb7a0 --- /dev/null +++ b/kvm_rs/kvm_sys/struct.kvm_segment.html @@ -0,0 +1,32 @@ +kvm_rs::kvm_sys::kvm_segment - Rust + +

Struct kvm_rs::kvm_sys::kvm_segment[][src]

#[repr(C)]pub struct kvm_segment {
+    pub base: u64,
+    pub limit: u32,
+    pub selector: u16,
+    pub type_: u8,
+    pub present: u8,
+    pub dpl: u8,
+    pub db: u8,
+    pub s: u8,
+    pub l: u8,
+    pub g: u8,
+    pub avl: u8,
+    // some fields omitted
+}

+ Fields

base: u64limit: u32selector: u16type_: u8present: u8dpl: u8db: u8s: u8l: u8g: u8avl: u8

Trait Implementations

impl Debug for kvm_segment[src]

impl Default for kvm_segment[src]

impl Display for kvm_segment[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

+

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

+
+ \ No newline at end of file diff --git a/kvm_rs/kvm_sys/struct.kvm_sregs.html b/kvm_rs/kvm_sys/struct.kvm_sregs.html new file mode 100644 index 0000000..9a45d40 --- /dev/null +++ b/kvm_rs/kvm_sys/struct.kvm_sregs.html @@ -0,0 +1,38 @@ +kvm_rs::kvm_sys::kvm_sregs - Rust + +

Struct kvm_rs::kvm_sys::kvm_sregs[][src]

#[repr(C)]pub struct kvm_sregs {
+    pub cs: kvm_segment,
+    pub ds: kvm_segment,
+    pub es: kvm_segment,
+    pub fs: kvm_segment,
+    pub gs: kvm_segment,
+    pub ss: kvm_segment,
+    pub tr: kvm_segment,
+    pub ldt: kvm_segment,
+    pub gdt: kvm_dtable,
+    pub idt: kvm_dtable,
+    pub cr0: u64,
+    pub cr2: u64,
+    pub cr3: u64,
+    pub cr4: u64,
+    pub cr8: u64,
+    pub efer: u64,
+    pub apic_base: u64,
+    pub interrupt_bitmap: [u64; 4],
+}

+ Fields

cs: kvm_segmentds: kvm_segmentes: kvm_segmentfs: kvm_segmentgs: kvm_segmentss: kvm_segmenttr: kvm_segmentldt: kvm_segmentgdt: kvm_dtableidt: kvm_dtablecr0: u64cr2: u64cr3: u64cr4: u64cr8: u64efer: u64apic_base: u64interrupt_bitmap: [u64; 4]

Trait Implementations

impl Debug for kvm_sregs[src]

impl Default for kvm_sregs[src]

impl Display for kvm_sregs[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

+

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

+
+ \ No newline at end of file diff --git a/kvm_rs/sidebar-items.js b/kvm_rs/sidebar-items.js new file mode 100644 index 0000000..b1bd5bb --- /dev/null +++ b/kvm_rs/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"mod":[["kvm","KVM system ioctls."],["kvm_sys","Definitions of the system header ``."],["vcpu","VCPU system ioctls."],["vm","VM system ioctls."],["x86_64","`x86_64` flags and bitfields."]],"struct":[["PhysAddr","Strong type representing physical addresses."],["UserMem","Wrapper to safely allocate memory for guest VMs."]]}); \ No newline at end of file diff --git a/kvm_rs/struct.PhysAddr.html b/kvm_rs/struct.PhysAddr.html new file mode 100644 index 0000000..5fb8083 --- /dev/null +++ b/kvm_rs/struct.PhysAddr.html @@ -0,0 +1,15 @@ +kvm_rs::PhysAddr - Rust + +

Struct kvm_rs::PhysAddr[][src]

pub struct PhysAddr(pub u64);

Strong type representing physical addresses.

+

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

+

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

+
+ \ No newline at end of file diff --git a/kvm_rs/struct.UserMem.html b/kvm_rs/struct.UserMem.html new file mode 100644 index 0000000..92ec687 --- /dev/null +++ b/kvm_rs/struct.UserMem.html @@ -0,0 +1,29 @@ +kvm_rs::UserMem - Rust + +

Struct kvm_rs::UserMem[][src]

pub struct UserMem { /* fields omitted */ }

Wrapper to safely allocate memory for guest VMs.

+

The underlying memory is freed automatically once the UserMem instance is dropped.

+

Memory can be mapped into a guest VM with +Vm::set_user_memory_region.

+

Implementations

impl UserMem[src]

pub fn new(len: usize) -> Result<UserMem>[src]

Allocate a zero-initialized memory region of len bytes.

+

pub fn with_init(len: usize, init_from: &[u8]) -> Result<UserMem>[src]

Allocate a zero-initialized memory region of len bytes and initialize the first bytes +with init_from.

+

Panics

+

Panics if init_from is larger than the memory size len.

+

pub fn load(&mut self, addr: PhysAddr, data: &[u8])[src]

Load the bytes stored in data into memory at physical address addr.

+

Panics

+

Panics if addr + data.len is larger than the memory size len.

+

Trait Implementations

impl AsMut<[u8]> for UserMem[src]

impl AsRef<[u8]> for UserMem[src]

impl Drop for UserMem[src]

fn drop(&mut self)[src]

Free underlying memory.

+

Auto Trait Implementations

impl RefUnwindSafe for UserMem

impl !Send for UserMem

impl !Sync for UserMem

impl Unpin for UserMem

impl UnwindSafe for UserMem

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

+

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

+
+ \ No newline at end of file diff --git a/kvm_rs/vcpu/enum.KvmExit.html b/kvm_rs/vcpu/enum.KvmExit.html new file mode 100644 index 0000000..42e3c04 --- /dev/null +++ b/kvm_rs/vcpu/enum.KvmExit.html @@ -0,0 +1,25 @@ +kvm_rs::vcpu::KvmExit - Rust + +

Enum kvm_rs::vcpu::KvmExit[][src]

pub enum KvmExit<'cpu> {
+    Halt,
+    IoIn(u16&'cpu mut [u8]),
+    IoOut(u16&'cpu [u8]),
+    MmioRead(u64&'cpu mut [u8]),
+    MmioWrite(u64&'cpu [u8]),
+}

Exit reasons for the Vcpu::kvm_run function.

+

Details for the different exit reasons can be found in the kvm_run +structure description.

+

+ Variants

+
Halt
IoOut(u16&'cpu [u8])
MmioRead(u64&'cpu mut [u8])
MmioWrite(u64&'cpu [u8])

Auto Trait Implementations

impl<'cpu> RefUnwindSafe for KvmExit<'cpu>

impl<'cpu> Send for KvmExit<'cpu>

impl<'cpu> Sync for KvmExit<'cpu>

impl<'cpu> Unpin for KvmExit<'cpu>

impl<'cpu> !UnwindSafe for KvmExit<'cpu>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

+

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

+
+ \ No newline at end of file diff --git a/kvm_rs/vcpu/index.html b/kvm_rs/vcpu/index.html new file mode 100644 index 0000000..571bab9 --- /dev/null +++ b/kvm_rs/vcpu/index.html @@ -0,0 +1,10 @@ +kvm_rs::vcpu - Rust + +

Module kvm_rs::vcpu[][src]

VCPU system ioctls.

+

Structs

+
Vcpu

Wrapper for VCPU ioctls.

+

Enums

+
KvmExit

Exit reasons for the Vcpu::kvm_run function.

+
+ \ No newline at end of file diff --git a/kvm_rs/vcpu/sidebar-items.js b/kvm_rs/vcpu/sidebar-items.js new file mode 100644 index 0000000..564790f --- /dev/null +++ b/kvm_rs/vcpu/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"enum":[["KvmExit","Exit reasons for the [`Vcpu::kvm_run`][crate::vcpu::Vcpu::kvm_run] function."]],"struct":[["Vcpu","Wrapper for VCPU ioctls."]]}); \ No newline at end of file diff --git a/kvm_rs/vcpu/struct.Vcpu.html b/kvm_rs/vcpu/struct.Vcpu.html new file mode 100644 index 0000000..698abb1 --- /dev/null +++ b/kvm_rs/vcpu/struct.Vcpu.html @@ -0,0 +1,27 @@ +kvm_rs::vcpu::Vcpu - Rust + +

Struct kvm_rs::vcpu::Vcpu[][src]

pub struct Vcpu { /* fields omitted */ }

Wrapper for VCPU ioctls.

+

Representation of the file descriptor obtained by the KVM_CREATE_VCPU ioctl. +This wrapper provides access to the VCPU ioctls as described in KVM API.

+

Implementations

impl Vcpu[src]

pub fn get_regs(&self) -> Result<kvm_regs>[src]

Get the general purpose registers with the KVM_GET_REGS ioctl in form of +kvm_regs.

+

pub fn set_regs(&self, regs: kvm_regs) -> Result<()>[src]

Set the general purpose registers with the KVM_SET_REGS ioctl in form of +kvm_regs.

+

pub fn get_sregs(&self) -> Result<kvm_sregs>[src]

Get the special registers with the KVM_GET_SREGS ioctl in form of +kvm_sregs.

+

pub fn set_sregs(&self, sregs: kvm_sregs) -> Result<()>[src]

Set the special registers with the KVM_SET_SREGS ioctl in form of +kvm_sregs.

+

pub fn run(&mut self) -> Result<KvmExit<'_>>[src]

Run the guest VCPU with the KVM_RUN ioctl until it exits with one of the exit +reasons described in KvmExit.

+

Auto Trait Implementations

impl RefUnwindSafe for Vcpu

impl !Send for Vcpu

impl !Sync for Vcpu

impl Unpin for Vcpu

impl UnwindSafe for Vcpu

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

+

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

+
+ \ No newline at end of file diff --git a/kvm_rs/vm/index.html b/kvm_rs/vm/index.html new file mode 100644 index 0000000..bb81e37 --- /dev/null +++ b/kvm_rs/vm/index.html @@ -0,0 +1,8 @@ +kvm_rs::vm - Rust + +

Module kvm_rs::vm[][src]

VM system ioctls.

+

Structs

+
Vm

Wrapper for VM ioctls.

+
+ \ No newline at end of file diff --git a/kvm_rs/vm/sidebar-items.js b/kvm_rs/vm/sidebar-items.js new file mode 100644 index 0000000..158eaf3 --- /dev/null +++ b/kvm_rs/vm/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"struct":[["Vm","Wrapper for VM ioctls."]]}); \ No newline at end of file diff --git a/kvm_rs/vm/struct.Vm.html b/kvm_rs/vm/struct.Vm.html new file mode 100644 index 0000000..6c165a6 --- /dev/null +++ b/kvm_rs/vm/struct.Vm.html @@ -0,0 +1,26 @@ +kvm_rs::vm::Vm - Rust + +

Struct kvm_rs::vm::Vm[][src]

pub struct Vm { /* fields omitted */ }

Wrapper for VM ioctls.

+

Representation of the file descriptor obtained by the KVM_CREATE_VM ioctl. +This wrapper provides access to the VM ioctls as described in KVM API.

+

Implementations

impl Vm[src]

pub unsafe fn set_user_memory_region(
    &self,
    phys_addr: PhysAddr,
    mem: &UserMem
) -> Result<()>
[src]

Map memory from userspace into the VM as guest physical memory starting at address +phys_addr. +The underlying operation is the [KVM_SET_USER_MEMORY_REGION][kmv-set-user-memory-region] +ioctl.

+

Safety

+

The mem: &UserMem argument passed to this function must at least live as long the Vcpu +instance.

+

pub fn create_vpcu(&self, id: u64) -> Result<Vcpu>[src]

Create a new virtual cpu with the KVM_CREATE_VCPU ioctl. +Returns a wrapper vcpu::Vcpu representing the VCPU.

+

Auto Trait Implementations

impl RefUnwindSafe for Vm

impl Send for Vm

impl Sync for Vm

impl Unpin for Vm

impl UnwindSafe for Vm

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

+

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.CR0_AM.html b/kvm_rs/x86_64/constant.CR0_AM.html new file mode 100644 index 0000000..7880ede --- /dev/null +++ b/kvm_rs/x86_64/constant.CR0_AM.html @@ -0,0 +1,8 @@ +kvm_rs::x86_64::CR0_AM - Rust + +

Constant kvm_rs::x86_64::CR0_AM[][src]

pub const CR0_AM: u64 = 1 << 18; // 0x0_000_000_000_040_000u64

Alignment Mask.

+

Enables alignment check for CPL=3, check is only done if the AC +bit of the rflags register ist set.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.CR0_CD.html b/kvm_rs/x86_64/constant.CR0_CD.html new file mode 100644 index 0000000..7d6d08f --- /dev/null +++ b/kvm_rs/x86_64/constant.CR0_CD.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::CR0_CD - Rust + +

Constant kvm_rs::x86_64::CR0_CD[][src]

pub const CR0_CD: u64 = 1 << 30; // 0x0_000_000_040_000_000u64

Cachine disable.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.CR0_EM.html b/kvm_rs/x86_64/constant.CR0_EM.html new file mode 100644 index 0000000..1e6cf28 --- /dev/null +++ b/kvm_rs/x86_64/constant.CR0_EM.html @@ -0,0 +1,8 @@ +kvm_rs::x86_64::CR0_EM - Rust + +

Constant kvm_rs::x86_64::CR0_EM[][src]

pub const CR0_EM: u64 = 1 << 2; // 0x0_000_000_000_000_004u64

Emulation.

+

When set indicates the process does not have a FPU. FPU instructions will generate an exception +that software can emulate the instruction.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.CR0_ET.html b/kvm_rs/x86_64/constant.CR0_ET.html new file mode 100644 index 0000000..20d6386 --- /dev/null +++ b/kvm_rs/x86_64/constant.CR0_ET.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::CR0_ET - Rust + +

Constant kvm_rs::x86_64::CR0_ET[][src]

pub const CR0_ET: u64 = 1 << 4; // 0x0_000_000_000_000_010u64

Extension Type.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.CR0_MP.html b/kvm_rs/x86_64/constant.CR0_MP.html new file mode 100644 index 0000000..2fcffd3 --- /dev/null +++ b/kvm_rs/x86_64/constant.CR0_MP.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::CR0_MP - Rust + +

Constant kvm_rs::x86_64::CR0_MP[][src]

pub const CR0_MP: u64 = 1 << 1; // 0x0_000_000_000_000_002u64

Monitor Coprocessor.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.CR0_NE.html b/kvm_rs/x86_64/constant.CR0_NE.html new file mode 100644 index 0000000..55c2409 --- /dev/null +++ b/kvm_rs/x86_64/constant.CR0_NE.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::CR0_NE - Rust + +

Constant kvm_rs::x86_64::CR0_NE[][src]

pub const CR0_NE: u64 = 1 << 5; // 0x0_000_000_000_000_020u64

Numeric Error.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.CR0_NW.html b/kvm_rs/x86_64/constant.CR0_NW.html new file mode 100644 index 0000000..b561962 --- /dev/null +++ b/kvm_rs/x86_64/constant.CR0_NW.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::CR0_NW - Rust + +

Constant kvm_rs::x86_64::CR0_NW[][src]

pub const CR0_NW: u64 = 1 << 29; // 0x0_000_000_020_000_000u64

Not Write-Torugh.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.CR0_PE.html b/kvm_rs/x86_64/constant.CR0_PE.html new file mode 100644 index 0000000..ccb1921 --- /dev/null +++ b/kvm_rs/x86_64/constant.CR0_PE.html @@ -0,0 +1,8 @@ +kvm_rs::x86_64::CR0_PE - Rust + +

Constant kvm_rs::x86_64::CR0_PE[][src]

pub const CR0_PE: u64 = 1 << 0; // 0x0_000_000_000_000_001u64

Protection Enable.

+

Enables protected mode when set and real-address mode when cleared. This enables +segment-level protection not paging.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.CR0_PG.html b/kvm_rs/x86_64/constant.CR0_PG.html new file mode 100644 index 0000000..763f7e0 --- /dev/null +++ b/kvm_rs/x86_64/constant.CR0_PG.html @@ -0,0 +1,7 @@ +kvm_rs::x86_64::CR0_PG - Rust + +

Constant kvm_rs::x86_64::CR0_PG[][src]

pub const CR0_PG: u64 = 1 << 31; // 0x0_000_000_080_000_000u64

Paging.

+

Enables paging when set, requires CR0_PE to be set as well.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.CR0_TS.html b/kvm_rs/x86_64/constant.CR0_TS.html new file mode 100644 index 0000000..6bb6377 --- /dev/null +++ b/kvm_rs/x86_64/constant.CR0_TS.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::CR0_TS - Rust + +

Constant kvm_rs::x86_64::CR0_TS[][src]

pub const CR0_TS: u64 = 1 << 3; // 0x0_000_000_000_000_008u64

Task Switched.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.CR0_WP.html b/kvm_rs/x86_64/constant.CR0_WP.html new file mode 100644 index 0000000..8628545 --- /dev/null +++ b/kvm_rs/x86_64/constant.CR0_WP.html @@ -0,0 +1,7 @@ +kvm_rs::x86_64::CR0_WP - Rust + +

Constant kvm_rs::x86_64::CR0_WP[][src]

pub const CR0_WP: u64 = 1 << 16; // 0x0_000_000_000_010_000u64

Write Protect.

+

When set supervisor-level procedures can’t write to read-only pages.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.CR3_PAGE_BASE_MASK.html b/kvm_rs/x86_64/constant.CR3_PAGE_BASE_MASK.html new file mode 100644 index 0000000..986f1ed --- /dev/null +++ b/kvm_rs/x86_64/constant.CR3_PAGE_BASE_MASK.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::CR3_PAGE_BASE_MASK - Rust + +

Constant kvm_rs::x86_64::CR3_PAGE_BASE_MASK[][src]

pub const CR3_PAGE_BASE_MASK: u64 = 0xffff_ffff_ffff_0000;

Mask for physical base address of paging structure.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.CR3_PCD.html b/kvm_rs/x86_64/constant.CR3_PCD.html new file mode 100644 index 0000000..cf704b0 --- /dev/null +++ b/kvm_rs/x86_64/constant.CR3_PCD.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::CR3_PCD - Rust + +

Constant kvm_rs::x86_64::CR3_PCD[][src]

pub const CR3_PCD: u64 = 1 << 4; // 0x0_000_000_000_000_010u64

Page-level Cache Disable.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.CR3_PWT.html b/kvm_rs/x86_64/constant.CR3_PWT.html new file mode 100644 index 0000000..d20bd52 --- /dev/null +++ b/kvm_rs/x86_64/constant.CR3_PWT.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::CR3_PWT - Rust + +

Constant kvm_rs::x86_64::CR3_PWT[][src]

pub const CR3_PWT: u64 = 1 << 3; // 0x0_000_000_000_000_008u64

Page-level Write-Through.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.CR4_LA57.html b/kvm_rs/x86_64/constant.CR4_LA57.html new file mode 100644 index 0000000..d66d363 --- /dev/null +++ b/kvm_rs/x86_64/constant.CR4_LA57.html @@ -0,0 +1,8 @@ +kvm_rs::x86_64::CR4_LA57 - Rust + +

Constant kvm_rs::x86_64::CR4_LA57[][src]

pub const CR4_LA57: u64 = 1 << 5; // 0x0_000_000_000_000_020u64

57-bit Linear Addresses.

+

When set in long mode enables 5-level paging to translate 57-bit linear addresses. When +cleared use 4-level paging to translate 48-bit linear addresses.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.CR4_PAE.html b/kvm_rs/x86_64/constant.CR4_PAE.html new file mode 100644 index 0000000..efd56b4 --- /dev/null +++ b/kvm_rs/x86_64/constant.CR4_PAE.html @@ -0,0 +1,8 @@ +kvm_rs::x86_64::CR4_PAE - Rust + +

Constant kvm_rs::x86_64::CR4_PAE[][src]

pub const CR4_PAE: u64 = 1 << 5; // 0x0_000_000_000_000_020u64

Physical Address Extenstion.

+

When set enables paging to produce physicall addresses with more than 32 bits. Required before +entering long mode.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.EFER_LMA.html b/kvm_rs/x86_64/constant.EFER_LMA.html new file mode 100644 index 0000000..e16f93b --- /dev/null +++ b/kvm_rs/x86_64/constant.EFER_LMA.html @@ -0,0 +1,7 @@ +kvm_rs::x86_64::EFER_LMA - Rust + +

Constant kvm_rs::x86_64::EFER_LMA[][src]

pub const EFER_LMA: u64 = 1 << 10; // 0x0_000_000_000_000_400u64

Long Mode Active (readonly).

+

When set indicates long mode is active.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.EFER_LME.html b/kvm_rs/x86_64/constant.EFER_LME.html new file mode 100644 index 0000000..ec81586 --- /dev/null +++ b/kvm_rs/x86_64/constant.EFER_LME.html @@ -0,0 +1,7 @@ +kvm_rs::x86_64::EFER_LME - Rust + +

Constant kvm_rs::x86_64::EFER_LME[][src]

pub const EFER_LME: u64 = 1 << 8; // 0x0_000_000_000_000_100u64

Long Mode Enable.

+

When set enables long mode operations.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.MSR_EFER.html b/kvm_rs/x86_64/constant.MSR_EFER.html new file mode 100644 index 0000000..91f1128 --- /dev/null +++ b/kvm_rs/x86_64/constant.MSR_EFER.html @@ -0,0 +1,8 @@ +kvm_rs::x86_64::MSR_EFER - Rust + +

Constant kvm_rs::x86_64::MSR_EFER[][src]

pub const MSR_EFER: u64 = 0xc000_0080;

Extended Feature Enable Register MSR number.

+

MSR number used with the rdmsr and wrmsr instructions to read/write the +EFER model specific register.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.PAGE_ENTRY_PRESENT.html b/kvm_rs/x86_64/constant.PAGE_ENTRY_PRESENT.html new file mode 100644 index 0000000..6802305 --- /dev/null +++ b/kvm_rs/x86_64/constant.PAGE_ENTRY_PRESENT.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::PAGE_ENTRY_PRESENT - Rust + +

Constant kvm_rs::x86_64::PAGE_ENTRY_PRESENT[][src]

pub const PAGE_ENTRY_PRESENT: u64 = 1 << 0; // 0x0_000_000_000_000_001u64

Page entry present.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.PAGE_RENTRY_RW.html b/kvm_rs/x86_64/constant.PAGE_RENTRY_RW.html new file mode 100644 index 0000000..5719909 --- /dev/null +++ b/kvm_rs/x86_64/constant.PAGE_RENTRY_RW.html @@ -0,0 +1,7 @@ +kvm_rs::x86_64::PAGE_RENTRY_RW - Rust + +

Constant kvm_rs::x86_64::PAGE_RENTRY_RW[][src]

pub const PAGE_RENTRY_RW: u64 = 1 << 1; // 0x0_000_000_000_000_002u64

Page region read/write.

+

If set, region reference by paging entry is writeable.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.RFLAGS_AC.html b/kvm_rs/x86_64/constant.RFLAGS_AC.html new file mode 100644 index 0000000..94d81cc --- /dev/null +++ b/kvm_rs/x86_64/constant.RFLAGS_AC.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::RFLAGS_AC - Rust + +

Constant kvm_rs::x86_64::RFLAGS_AC[][src]

pub const RFLAGS_AC: u64 = 1 << 18; // 0x0_000_000_000_040_000u64

Alignment check.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.RFLAGS_AF.html b/kvm_rs/x86_64/constant.RFLAGS_AF.html new file mode 100644 index 0000000..50f8b7f --- /dev/null +++ b/kvm_rs/x86_64/constant.RFLAGS_AF.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::RFLAGS_AF - Rust + +

Constant kvm_rs::x86_64::RFLAGS_AF[][src]

pub const RFLAGS_AF: u64 = 1 << 4; // 0x0_000_000_000_000_010u64

Adjust flag.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.RFLAGS_CF.html b/kvm_rs/x86_64/constant.RFLAGS_CF.html new file mode 100644 index 0000000..cdb9287 --- /dev/null +++ b/kvm_rs/x86_64/constant.RFLAGS_CF.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::RFLAGS_CF - Rust + +

Constant kvm_rs::x86_64::RFLAGS_CF[][src]

pub const RFLAGS_CF: u64 = 1 << 0; // 0x0_000_000_000_000_001u64

Carry flag.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.RFLAGS_DF.html b/kvm_rs/x86_64/constant.RFLAGS_DF.html new file mode 100644 index 0000000..59bbb8d --- /dev/null +++ b/kvm_rs/x86_64/constant.RFLAGS_DF.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::RFLAGS_DF - Rust + +

Constant kvm_rs::x86_64::RFLAGS_DF[][src]

pub const RFLAGS_DF: u64 = 1 << 10; // 0x0_000_000_000_000_400u64

Direction flag.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.RFLAGS_IF.html b/kvm_rs/x86_64/constant.RFLAGS_IF.html new file mode 100644 index 0000000..a11e820 --- /dev/null +++ b/kvm_rs/x86_64/constant.RFLAGS_IF.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::RFLAGS_IF - Rust + +

Constant kvm_rs::x86_64::RFLAGS_IF[][src]

pub const RFLAGS_IF: u64 = 1 << 9; // 0x0_000_000_000_000_200u64

Sign flag.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.RFLAGS_IOPL.html b/kvm_rs/x86_64/constant.RFLAGS_IOPL.html new file mode 100644 index 0000000..7fafaaa --- /dev/null +++ b/kvm_rs/x86_64/constant.RFLAGS_IOPL.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::RFLAGS_IOPL - Rust + +

Constant kvm_rs::x86_64::RFLAGS_IOPL[][src]

pub const RFLAGS_IOPL: u64 = 0b11 << 12; // 0x0_000_000_000_003_000u64

I/O privilege level.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.RFLAGS_OF.html b/kvm_rs/x86_64/constant.RFLAGS_OF.html new file mode 100644 index 0000000..d74a58a --- /dev/null +++ b/kvm_rs/x86_64/constant.RFLAGS_OF.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::RFLAGS_OF - Rust + +

Constant kvm_rs::x86_64::RFLAGS_OF[][src]

pub const RFLAGS_OF: u64 = 1 << 11; // 0x0_000_000_000_000_800u64

Overflow flag.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.RFLAGS_PF.html b/kvm_rs/x86_64/constant.RFLAGS_PF.html new file mode 100644 index 0000000..1922cf5 --- /dev/null +++ b/kvm_rs/x86_64/constant.RFLAGS_PF.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::RFLAGS_PF - Rust + +

Constant kvm_rs::x86_64::RFLAGS_PF[][src]

pub const RFLAGS_PF: u64 = 1 << 2; // 0x0_000_000_000_000_004u64

Parity flag.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.RFLAGS_SF.html b/kvm_rs/x86_64/constant.RFLAGS_SF.html new file mode 100644 index 0000000..2e303ac --- /dev/null +++ b/kvm_rs/x86_64/constant.RFLAGS_SF.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::RFLAGS_SF - Rust + +

Constant kvm_rs::x86_64::RFLAGS_SF[][src]

pub const RFLAGS_SF: u64 = 1 << 7; // 0x0_000_000_000_000_080u64

Sign flag.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.RFLAGS_ZF.html b/kvm_rs/x86_64/constant.RFLAGS_ZF.html new file mode 100644 index 0000000..3d3ab64 --- /dev/null +++ b/kvm_rs/x86_64/constant.RFLAGS_ZF.html @@ -0,0 +1,6 @@ +kvm_rs::x86_64::RFLAGS_ZF - Rust + +

Constant kvm_rs::x86_64::RFLAGS_ZF[][src]

pub const RFLAGS_ZF: u64 = 1 << 6; // 0x0_000_000_000_000_040u64

Zero flag.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.SEG_SELECTOR_INDEX.html b/kvm_rs/x86_64/constant.SEG_SELECTOR_INDEX.html new file mode 100644 index 0000000..281e6bb --- /dev/null +++ b/kvm_rs/x86_64/constant.SEG_SELECTOR_INDEX.html @@ -0,0 +1,8 @@ +kvm_rs::x86_64::SEG_SELECTOR_INDEX - Rust + +

Constant kvm_rs::x86_64::SEG_SELECTOR_INDEX[][src]

pub const SEG_SELECTOR_INDEX: u16 = 0x1fff << 3; // 0xf_ff8u16

Table index.

+

Index into the GDT or LDT table to select the segment descriptor. GDT.base + 8 * index +gives the address of the segment descriptor (times 8 because every segment descriptor is 8 byte).

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.SEG_SELECTOR_RPL.html b/kvm_rs/x86_64/constant.SEG_SELECTOR_RPL.html new file mode 100644 index 0000000..b451997 --- /dev/null +++ b/kvm_rs/x86_64/constant.SEG_SELECTOR_RPL.html @@ -0,0 +1,8 @@ +kvm_rs::x86_64::SEG_SELECTOR_RPL - Rust + +

Constant kvm_rs::x86_64::SEG_SELECTOR_RPL[][src]

pub const SEG_SELECTOR_RPL: u16 = 0b11 << 0; // 0x0_003u16

Requested privilege level.

+

Privilege level of the segment selector, where 0 is the most privileged mode and 3 the +least.

+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/constant.SEG_SELECTOR_TI.html b/kvm_rs/x86_64/constant.SEG_SELECTOR_TI.html new file mode 100644 index 0000000..2f3f0d9 --- /dev/null +++ b/kvm_rs/x86_64/constant.SEG_SELECTOR_TI.html @@ -0,0 +1,10 @@ +kvm_rs::x86_64::SEG_SELECTOR_TI - Rust + +

Constant kvm_rs::x86_64::SEG_SELECTOR_TI[][src]

pub const SEG_SELECTOR_TI: u16 = 1 << 2; // 0x0_004u16

Table indicator.

+ + + +
TITable
0GDT
1LDT
+
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/fn.rflags_ac.html b/kvm_rs/x86_64/fn.rflags_ac.html new file mode 100644 index 0000000..06e8c1d --- /dev/null +++ b/kvm_rs/x86_64/fn.rflags_ac.html @@ -0,0 +1,5 @@ +kvm_rs::x86_64::rflags_ac - Rust + +

Function kvm_rs::x86_64::rflags_ac[][src]

pub const fn rflags_ac(r: u64) -> u64
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/fn.rflags_af.html b/kvm_rs/x86_64/fn.rflags_af.html new file mode 100644 index 0000000..9112902 --- /dev/null +++ b/kvm_rs/x86_64/fn.rflags_af.html @@ -0,0 +1,5 @@ +kvm_rs::x86_64::rflags_af - Rust + +

Function kvm_rs::x86_64::rflags_af[][src]

pub const fn rflags_af(r: u64) -> u64
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/fn.rflags_cf.html b/kvm_rs/x86_64/fn.rflags_cf.html new file mode 100644 index 0000000..cdd63d8 --- /dev/null +++ b/kvm_rs/x86_64/fn.rflags_cf.html @@ -0,0 +1,5 @@ +kvm_rs::x86_64::rflags_cf - Rust + +

Function kvm_rs::x86_64::rflags_cf[][src]

pub const fn rflags_cf(r: u64) -> u64
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/fn.rflags_df.html b/kvm_rs/x86_64/fn.rflags_df.html new file mode 100644 index 0000000..6b3567f --- /dev/null +++ b/kvm_rs/x86_64/fn.rflags_df.html @@ -0,0 +1,5 @@ +kvm_rs::x86_64::rflags_df - Rust + +

Function kvm_rs::x86_64::rflags_df[][src]

pub const fn rflags_df(r: u64) -> u64
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/fn.rflags_if.html b/kvm_rs/x86_64/fn.rflags_if.html new file mode 100644 index 0000000..4600467 --- /dev/null +++ b/kvm_rs/x86_64/fn.rflags_if.html @@ -0,0 +1,5 @@ +kvm_rs::x86_64::rflags_if - Rust + +

Function kvm_rs::x86_64::rflags_if[][src]

pub const fn rflags_if(r: u64) -> u64
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/fn.rflags_iopl.html b/kvm_rs/x86_64/fn.rflags_iopl.html new file mode 100644 index 0000000..5ba8e0d --- /dev/null +++ b/kvm_rs/x86_64/fn.rflags_iopl.html @@ -0,0 +1,5 @@ +kvm_rs::x86_64::rflags_iopl - Rust + +

Function kvm_rs::x86_64::rflags_iopl[][src]

pub const fn rflags_iopl(r: u64) -> u64
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/fn.rflags_of.html b/kvm_rs/x86_64/fn.rflags_of.html new file mode 100644 index 0000000..27be426 --- /dev/null +++ b/kvm_rs/x86_64/fn.rflags_of.html @@ -0,0 +1,5 @@ +kvm_rs::x86_64::rflags_of - Rust + +

Function kvm_rs::x86_64::rflags_of[][src]

pub const fn rflags_of(r: u64) -> u64
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/fn.rflags_pf.html b/kvm_rs/x86_64/fn.rflags_pf.html new file mode 100644 index 0000000..c131a01 --- /dev/null +++ b/kvm_rs/x86_64/fn.rflags_pf.html @@ -0,0 +1,5 @@ +kvm_rs::x86_64::rflags_pf - Rust + +

Function kvm_rs::x86_64::rflags_pf[][src]

pub const fn rflags_pf(r: u64) -> u64
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/fn.rflags_sf.html b/kvm_rs/x86_64/fn.rflags_sf.html new file mode 100644 index 0000000..1c1f0b0 --- /dev/null +++ b/kvm_rs/x86_64/fn.rflags_sf.html @@ -0,0 +1,5 @@ +kvm_rs::x86_64::rflags_sf - Rust + +

Function kvm_rs::x86_64::rflags_sf[][src]

pub const fn rflags_sf(r: u64) -> u64
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/fn.rflags_zf.html b/kvm_rs/x86_64/fn.rflags_zf.html new file mode 100644 index 0000000..f1771d8 --- /dev/null +++ b/kvm_rs/x86_64/fn.rflags_zf.html @@ -0,0 +1,5 @@ +kvm_rs::x86_64::rflags_zf - Rust + +

Function kvm_rs::x86_64::rflags_zf[][src]

pub const fn rflags_zf(r: u64) -> u64
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/fn.seg_selector_index.html b/kvm_rs/x86_64/fn.seg_selector_index.html new file mode 100644 index 0000000..8c79a6b --- /dev/null +++ b/kvm_rs/x86_64/fn.seg_selector_index.html @@ -0,0 +1,5 @@ +kvm_rs::x86_64::seg_selector_index - Rust + +

Function kvm_rs::x86_64::seg_selector_index[][src]

pub const fn seg_selector_index(s: u16) -> u16
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/fn.seg_selector_rpl.html b/kvm_rs/x86_64/fn.seg_selector_rpl.html new file mode 100644 index 0000000..71e41fe --- /dev/null +++ b/kvm_rs/x86_64/fn.seg_selector_rpl.html @@ -0,0 +1,5 @@ +kvm_rs::x86_64::seg_selector_rpl - Rust + +

Function kvm_rs::x86_64::seg_selector_rpl[][src]

pub const fn seg_selector_rpl(s: u16) -> u16
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/fn.seg_selector_ti.html b/kvm_rs/x86_64/fn.seg_selector_ti.html new file mode 100644 index 0000000..edf949b --- /dev/null +++ b/kvm_rs/x86_64/fn.seg_selector_ti.html @@ -0,0 +1,5 @@ +kvm_rs::x86_64::seg_selector_ti - Rust + +

Function kvm_rs::x86_64::seg_selector_ti[][src]

pub const fn seg_selector_ti(s: u16) -> u16
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/index.html b/kvm_rs/x86_64/index.html new file mode 100644 index 0000000..6303749 --- /dev/null +++ b/kvm_rs/x86_64/index.html @@ -0,0 +1,42 @@ +kvm_rs::x86_64 - Rust + +

Module kvm_rs::x86_64[][src]

x86_64 flags and bitfields.

+

Constants

+
CR0_AM

Alignment Mask.

+
CR0_CD

Cachine disable.

+
CR0_EM

Emulation.

+
CR0_ET

Extension Type.

+
CR0_MP

Monitor Coprocessor.

+
CR0_NE

Numeric Error.

+
CR0_NW

Not Write-Torugh.

+
CR0_PE

Protection Enable.

+
CR0_PG

Paging.

+
CR0_TS

Task Switched.

+
CR0_WP

Write Protect.

+
CR3_PAGE_BASE_MASK

Mask for physical base address of paging structure.

+
CR3_PCD

Page-level Cache Disable.

+
CR3_PWT

Page-level Write-Through.

+
CR4_LA57

57-bit Linear Addresses.

+
CR4_PAE

Physical Address Extenstion.

+
EFER_LMA

Long Mode Active (readonly).

+
EFER_LME

Long Mode Enable.

+
MSR_EFER

Extended Feature Enable Register MSR number.

+
PAGE_ENTRY_PRESENT

Page entry present.

+
PAGE_RENTRY_RW

Page region read/write.

+
RFLAGS_AC

Alignment check.

+
RFLAGS_AF

Adjust flag.

+
RFLAGS_CF

Carry flag.

+
RFLAGS_DF

Direction flag.

+
RFLAGS_IF

Sign flag.

+
RFLAGS_IOPL

I/O privilege level.

+
RFLAGS_OF

Overflow flag.

+
RFLAGS_PF

Parity flag.

+
RFLAGS_SF

Sign flag.

+
RFLAGS_ZF

Zero flag.

+
SEG_SELECTOR_INDEX

Table index.

+
SEG_SELECTOR_RPL

Requested privilege level.

+
SEG_SELECTOR_TI

Table indicator.

+

Functions

+
rflags_ac
rflags_af
rflags_cf
rflags_df
rflags_if
rflags_iopl
rflags_of
rflags_pf
rflags_sf
rflags_zf
seg_selector_index
seg_selector_rpl
seg_selector_ti
+ \ No newline at end of file diff --git a/kvm_rs/x86_64/sidebar-items.js b/kvm_rs/x86_64/sidebar-items.js new file mode 100644 index 0000000..e82f7b3 --- /dev/null +++ b/kvm_rs/x86_64/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"constant":[["CR0_AM","Alignment Mask."],["CR0_CD","Cachine disable."],["CR0_EM","Emulation."],["CR0_ET","Extension Type."],["CR0_MP","Monitor Coprocessor."],["CR0_NE","Numeric Error."],["CR0_NW","Not Write-Torugh."],["CR0_PE","Protection Enable."],["CR0_PG","Paging."],["CR0_TS","Task Switched."],["CR0_WP","Write Protect."],["CR3_PAGE_BASE_MASK","Mask for physical base address of paging structure."],["CR3_PCD","Page-level Cache Disable."],["CR3_PWT","Page-level Write-Through."],["CR4_LA57","57-bit Linear Addresses."],["CR4_PAE","Physical Address Extenstion."],["EFER_LMA","Long Mode Active (readonly)."],["EFER_LME","Long Mode Enable."],["MSR_EFER","Extended Feature Enable Register MSR number."],["PAGE_ENTRY_PRESENT","Page entry present."],["PAGE_RENTRY_RW","Page region read/write."],["RFLAGS_AC","Alignment check."],["RFLAGS_AF","Adjust flag."],["RFLAGS_CF","Carry flag."],["RFLAGS_DF","Direction flag."],["RFLAGS_IF","Sign flag."],["RFLAGS_IOPL","I/O privilege level."],["RFLAGS_OF","Overflow flag."],["RFLAGS_PF","Parity flag."],["RFLAGS_SF","Sign flag."],["RFLAGS_ZF","Zero flag."],["SEG_SELECTOR_INDEX","Table index."],["SEG_SELECTOR_RPL","Requested privilege level."],["SEG_SELECTOR_TI","Table indicator."]],"fn":[["rflags_ac",""],["rflags_af",""],["rflags_cf",""],["rflags_df",""],["rflags_if",""],["rflags_iopl",""],["rflags_of",""],["rflags_pf",""],["rflags_sf",""],["rflags_zf",""],["seg_selector_index",""],["seg_selector_rpl",""],["seg_selector_ti",""]]}); \ No newline at end of file diff --git a/light.css b/light.css new file mode 100644 index 0000000..050c4f2 --- /dev/null +++ b/light.css @@ -0,0 +1 @@ + body{background-color:white;color:black;}h1,h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod){color:black;}h1.fqn{border-bottom-color:#D5D5D5;}h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod){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{background-color:#F5F5F5;}.sidebar{background-color:#F1F1F1;}*{scrollbar-color:rgba(36,37,39,0.6) #e6e6e6;}.sidebar{scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;}.logo-container.rust-logo>img{}::-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:#fff;}.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:#f6fdb0 !important;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5{border-bottom-color:#ddd;}.docblock table,.docblock table td,.docblock table th{border-color:#ddd;}.content .method .where,.content .fn .where,.content .where.fmt-newline{color:#4E4C4C;}.content .highlighted{color:#000 !important;background-color:#ccc;}.content .highlighted a,.content .highlighted span{color:#000 !important;}.content .highlighted.trait{background-color:#c7b6ff;}.content .highlighted.traitalias{background-color:#c7b6ff;}.content .highlighted.mod,.content .highlighted.externcrate{background-color:#afc6e4;}.content .highlighted.enum{background-color:#b4d1b9;}.content .highlighted.struct{background-color:#e7b1a0;}.content .highlighted.union{background-color:#b7bd49;}.content .highlighted.fn,.content .highlighted.method,.content .highlighted.tymethod{background-color:#c6afb3;}.content .highlighted.type{background-color:#ffc891;}.content .highlighted.foreigntype{background-color:#f5c4ff;}.content .highlighted.attr,.content .highlighted.derive,.content .highlighted.macro{background-color:#8ce488;}.content .highlighted.constant,.content .highlighted.static{background-color:#c3e0ff;}.content .highlighted.primitive{background-color:#9aecff;}.content .highlighted.keyword{background-color:#f99650;}.content .item-info::before{color:#ccc;}.content span.enum,.content a.enum,.block a.current.enum{color:#508157;}.content span.struct,.content a.struct,.block a.current.struct{color:#ad448e;}.content span.type,.content a.type,.block a.current.type{color:#ba5d00;}.content span.foreigntype,.content a.foreigntype,.block a.current.foreigntype{color:#cd00e2;}.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:#767b27;}.content span.constant,.content a.constant,.block a.current.constant,.content span.static,.content a.static,.block a.current.static{color:#546e8a;}.content span.primitive,.content a.primitive,.block a.current.primitive{color:#2c8093;}.content span.externcrate,.content span.mod,.content a.mod,.block a.current.mod{color:#4d76ae;}.content span.trait,.content a.trait,.block a.current.trait{color:#7c5af3;}.content span.traitalias,.content a.traitalias,.block a.current.traitalias{color:#6841f1;}.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:#9a6e31;}.content span.keyword,.content a.keyword,.block a.current.keyword{color:#de5249;}pre.rust .comment{color:#8E908C;}pre.rust .doccomment{color:#4D4D4C;}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:#000;}.docblock:not(.type-decl) a:not(.srclink):not(.test-arrow),.docblock-short a:not(.srclink):not(.test-arrow),.item-info a,#help a{color:#3873AD;}a.test-arrow{color:#f5f5f5;}.collapse-toggle{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;}.search-focus:disabled{background-color:#e6e6e6;}#crate-search+.search-input:focus{box-shadow:0 0 8px #078dd8;}.module-item .stab{color:#000;}.stab.unstable{background:#FFF5D6;border-color:#FFC600;}.stab.deprecated{background:#F3DFFF;border-color:#7F0087;}.stab.portability{background:#C4ECFF;border-color:#7BA5DB;}.stab.portability>code{background:none;}#help>div{background:#e9e9e9;border-color:#bfbfbf;}#help>div>span{border-bottom-color:#bfbfbf;}.since{color:grey;}tr.result span.primitive::after,tr.result span.keyword::after{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 .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:rgba(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}.toggle-label{color:#999;}:target>code,:target>.in-band{background:#FDFFD3;border-right:3px solid #ffb44c;}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:#0089ff;}.tooltip::after{background-color:#000;color:#fff;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#eee;border-color:#999;}#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:#F1F1F1;border-bottom-color:#e0e0e0;border-right-color:#e0e0e0;}.sidebar-elems{background-color:#F1F1F1;border-right-color:#000;}#sidebar-filler{background-color:#F1F1F1;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;}#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 td span.alias{color:#000;}.search-results td span.grey{color:#999;}#sidebar-toggle{background-color:#F1F1F1;}#sidebar-toggle:hover{background-color:#E0E0E0;}#source-sidebar{background-color:#F1F1F1;}#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/main.js b/main.js new file mode 100644 index 0000000..9beaa88 --- /dev/null +++ b/main.js @@ -0,0 +1,8 @@ +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(){var rustdocVars=document.getElementById("rustdoc-vars");if(rustdocVars){window.rootPath=rustdocVars.attributes["data-root-path"].value;window.currentCrate=rustdocVars.attributes["data-current-crate"].value;window.searchJS=rustdocVars.attributes["data-search-js"].value}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)}function getSearchInput(){return document.getElementsByClassName("search-input")[0]}function getSearchElement(){return document.getElementById("search")}function getThemesElement(){return document.getElementById("theme-choices")}function getThemePickerElement(){return document.getElementById("theme-picker")}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function focusSearchBar(){getSearchInput().focus()}function defocusSearchBar(){getSearchInput().blur()}(function(){"use strict";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 disableShortcuts=getSettingValue("disable-shortcuts")==="true";var search_input=getSearchInput();var searchTimeout=null;var toggleAllDocsId="toggle-all-docs";var currentTab=0;var mouseMovedAfterSearch=true;var titleBeforeSearch=document.title;var searchTitle=null;function clearInputTimeout(){if(searchTimeout!==null){clearTimeout(searchTimeout);searchTimeout=null}}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=""}function showSearchResults(search){if(search===null||typeof search==='undefined'){search=getSearchElement()}addClass(main,"hidden");removeClass(search,"hidden");mouseMovedAfterSearch=false;document.title=searchTitle}function hideSearchResults(search){if(search===null||typeof search==='undefined'){search=getSearchElement()}addClass(search,"hidden");removeClass(main,"hidden");document.title=titleBeforeSearch;if(browserSupportsHistoryApi()){history.replaceState("",window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}}var TY_PRIMITIVE=itemTypes.indexOf("primitive");var TY_KEYWORD=itemTypes.indexOf("keyword");function getQueryStringParams(){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}function browserSupportsHistoryApi(){return window.history&&typeof window.history.pushState==="function"}function isHidden(elem){return elem.offsetHeight===0}var main=document.getElementById("main");var savedHash="";function handleHashes(ev){var elem;var search=getSearchElement();if(ev!==null&&search&&!hasClass(search,"hidden")&&ev.newURL){hideSearchResults(search);var hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(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}elem=document.getElementById(savedHash.slice(1));if(!elem||!isHidden(elem)){return}var parent=elem.parentNode;if(parent&&hasClass(parent,"impl-items")){onEachLazy(parent.getElementsByClassName("collapsed"),function(e){if(e.parentNode===parent){e.click();return true}});if(isHidden(elem)){if(hasClass(parent.lastElementChild,"collapse-toggle")){parent.lastElementChild.click()}}}}}function highlightSourceLines(match,ev){if(typeof match==="undefined"){hideSidebar();match=window.location.hash.match(/^#?(\d+)(?:-(\d+))?$/)}if(!match){return}var from=parseInt(match[1],10);var to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(to0){collapseDocs(collapses[0],"show")}}}}function getHelpElement(build){if(build!==false){buildHelperPopup()}return document.getElementById("help")}function displayHelp(display,ev,help){if(display===true){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")===false){ev.preventDefault();addClass(help,"hidden");removeClass(document.body,"blur")}}}function handleEscape(ev){var help=getHelpElement(false);var search=getSearchElement();if(hasClass(help,"hidden")===false){displayHelp(false,ev,help)}else if(hasClass(search,"hidden")===false){clearInputTimeout();ev.preventDefault();hideSearchResults(search)}defocusSearchBar();hideThemeButtonState()}function handleShortcut(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts===true){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();focusSearchBar();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:var themePicker=getThemePickerElement();if(themePicker.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"){active.previousElementSibling.focus()}else{showThemeButtonState();themes.lastElementChild.focus()}break;case"ArrowDown":ev.preventDefault();if(active.nextElementSibling&&ev.target.id!=="theme-picker"){active.nextElementSibling.focus()}else{showThemeButtonState();themes.firstElementChild.focus()}break;case"Enter":case"Return":case"Space":if(ev.target.id==="theme-picker"&&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}}function findParentElement(elem,tagName){do{if(elem&&elem.tagName===tagName){return elem}elem=elem.parentNode}while(elem);return null}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);document.addEventListener("mousemove",function(){mouseMovedAfterSearch=true});var handleSourceHighlight=(function(){var prev_line_id=0;var set_fragment=function(name){var x=window.scrollX,y=window.scrollY;if(browserSupportsHistoryApi()){history.replaceState(null,null,"#"+name);highlightSourceLines()}else{location.replace("#"+name)}window.scrollTo(x,y)};return function(ev){var cur_line_id=parseInt(ev.target.id,10);ev.preventDefault();if(ev.shiftKey&&prev_line_id){if(prev_line_id>cur_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)}}}());document.addEventListener("click",function(ev){var helpElem=getHelpElement(false);if(hasClass(ev.target,"help-button")){displayHelp(true,ev)}else if(hasClass(ev.target,"collapse-toggle")){collapseDocs(ev.target,"toggle")}else if(hasClass(ev.target.parentNode,"collapse-toggle")){collapseDocs(ev.target.parentNode,"toggle")}else if(ev.target.tagName==="SPAN"&&hasClass(ev.target.parentNode,"line-numbers")){handleSourceHighlight(ev)}else if(helpElem&&hasClass(helpElem,"hidden")===false){var is_inside_help_popup=ev.target!==helpElem&&helpElem.contains(ev.target);if(is_inside_help_popup===false){addClass(helpElem,"hidden");removeClass(document.body,"blur")}}else{var a=findParentElement(ev.target,"A");if(a&&a.hash){expandSection(a.hash.replace(/^#/,""))}}});(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-1){var obj=searchIndex[results[i].id];obj.lev=results[i].lev;if(isType!==true||obj.type){var res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;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(hasOwnProperty(results,entry)){ar.push(results[entry])}}results=ar;var i,len,result;for(i=0,len=results.length;ib?+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(i=0,len=results.length;i"));return{name:val.substring(0,val.indexOf("<")),generics:values.split(/\s*,\s*/),}}return{name:val,generics:[],}}function getObjectNameFromId(id){if(typeof id==="number"){return searchIndex[id].name}return id}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=object[GENERICS_DATA].length;for(var x=0;xGENERICS_DATA&&obj[GENERICS_DATA].length>=val.generics.length){var elems=Object.create(null);len=obj[GENERICS_DATA].length;for(x=0;xGENERICS_DATA&&obj[GENERICS_DATA].length!==0){var tmp_lev=checkGenerics(obj,val);if(tmp_lev<=MAX_LEV_DISTANCE){return tmp_lev}}else{return 0}}if(literalSearch===true){if(obj.length>GENERICS_DATA&&obj[GENERICS_DATA].length>0){return obj[GENERICS_DATA].some(function(name){return name===val.name})}return false}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)}else 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===false){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)}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;i1?paths.length-1:1);var lev;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)===false){lev=MAX_LEV_DISTANCE+1}else{lev+=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}}if(in_args<=MAX_LEV_DISTANCE){if(results_in_args[fullId]===undefined){results_in_args[fullId]={id:j,index:index,lev:in_args,}}results_in_args[fullId].lev=Math.min(results_in_args[fullId].lev,in_args)}if(returned<=MAX_LEV_DISTANCE){if(results_returned[fullId]===undefined){results_returned[fullId]={id:j,index:index,lev:returned,}}results_returned[fullId].lev=Math.min(results_returned[fullId].lev,returned)}if(index!==-1||lev<=MAX_LEV_DISTANCE){if(index!==-1&&paths.length<2){lev=0}if(results[fullId]===undefined){results[fullId]={id:j,index:index,lev:lev,}}results[fullId].lev=Math.min(results[fullId].lev,lev)}}}var ret={"in_args":sortResults(results_in_args,true),"returned":sortResults(results_returned,true),"others":sortResults(results),};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 initSearchNav(){var hoverTimeout;var click_func=function(e){var el=e.target;while(el.tagName!=="TR"){el=el.parentNode}var dst=e.target.getElementsByTagName("a");if(dst.length<1){return}dst=dst[0];if(window.location.pathname===dst.pathname){hideSearchResults();document.location.href=dst.href}};var mouseover_func=function(e){if(mouseMovedAfterSearch){var el=e.target;while(el.tagName!=="TR"){el=el.parentNode}clearTimeout(hoverTimeout);hoverTimeout=setTimeout(function(){onEachLazy(document.getElementsByClassName("search-results"),function(e){onEachLazy(e.getElementsByClassName("result"),function(i_e){removeClass(i_e,"highlighted")})});addClass(el,"highlighted")},20)}};onEachLazy(document.getElementsByClassName("search-results"),function(e){onEachLazy(e.getElementsByClassName("result"),function(i_e){i_e.onclick=click_func;i_e.onmouseover=mouseover_func})});search_input.onkeydown=function(e){var actives=[[],[],[]];var current=0;onEachLazy(document.getElementById("results").childNodes,function(e){onEachLazy(e.getElementsByClassName("highlighted"),function(h_e){actives[current].push(h_e)});current+=1});if(e.which===38){if(e.ctrlKey){printTab(currentTab>0?currentTab-1:2)}else{if(!actives[currentTab].length||!actives[currentTab][0].previousElementSibling){return}addClass(actives[currentTab][0].previousElementSibling,"highlighted");removeClass(actives[currentTab][0],"highlighted")}e.preventDefault()}else if(e.which===40){if(e.ctrlKey){printTab(currentTab>1?0:currentTab+1)}else if(!actives[currentTab].length){var results=document.getElementById("results").childNodes;if(results.length>0){var res=results[currentTab].getElementsByClassName("result");if(res.length>0){addClass(res[0],"highlighted")}}}else if(actives[currentTab][0].nextElementSibling){addClass(actives[currentTab][0].nextElementSibling,"highlighted");removeClass(actives[currentTab][0],"highlighted")}e.preventDefault()}else if(e.which===13){if(actives[currentTab].length){document.location.href=actives[currentTab][0].getElementsByTagName("a")[0].href}}else if(e.which===16){}else if(actives[currentTab].length>0){removeClass(actives[currentTab][0],"highlighted")}}}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 extraStyle="";if(display===false){extraStyle=" style=\"display: none;\""}var output="";var duplicates={};var length=0;if(array.length>0){output="";array.forEach(function(item){var name,type;name=item.name;type=itemTypes[item.ty];if(item.is_alias!==true){if(duplicates[item.fullPath]){return}duplicates[item.fullPath]=true}length+=1;output+=""});output+="
"+""+(item.is_alias===true?(""+item.alias+"  - see "):"")+item.displayPath+""+name+""+""+""+item.desc+" 
"}else{output="
No results :(
"+"Try on DuckDuckGo?

"+"Or try looking in one of these:
"}return[output,length]}function makeTabHeader(tabNb,text,nbElems){if(currentTab===tabNb){return""}return""}function showResults(results){var search=getSearchElement();if(results.others.length===1&&getSettingValue("go-to-only-result")==="true"&&(!search.firstChild||search.firstChild.innerText!==getSearchLoadingText())){var elem=document.createElement("a");elem.href=results.others[0].href;elem.style.display="none";document.body.appendChild(elem);elem.click();return}var query=getQuery(search_input.value);currentResults=query.id;var ret_others=addTab(results.others,query);var ret_in_args=addTab(results.in_args,query,false);var ret_returned=addTab(results.returned,query,false);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}}var output="

Results for "+escape(query.query)+(query.type?" (type: "+escape(query.type)+")":"")+"

"+"
"+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
"+ret_others[0]+ret_in_args[0]+ret_returned[0]+"
";search.innerHTML=output;showSearchResults(search);initSearchNav();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}var queries=query.raw.split(",");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"&&hasOwnProperty(rawSearchIndex,elem.value)){return elem.value}return undefined}function search(e,forced){var params=getQueryStringParams();var query=getQuery(search_input.value.trim());if(e){e.preventDefault()}if(query.query.length===0){return}if(forced!==true&&query.id===currentResults){if(query.query.length>0){putBackSearch(search_input)}return}searchTitle="Results for "+query.query+" - Rust";if(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,index,filterCrates))}function buildIndex(rawSearchIndex){searchIndex=[];var searchWords=[];var i,word;var currentIndex=0;var id=0;for(var crate in rawSearchIndex){if(!hasOwnProperty(rawSearchIndex,crate)){continue}var crateSize=0;searchWords.push(crate);var normalizedName=crate.indexOf("_")===-1?crate:crate.replace(/_/g,"");var crateRow={crate:crate,ty:1,name:crate,path:"",desc:rawSearchIndex[crate].doc,parent:undefined,type:null,id:id,normalizedName:normalizedName,};id+=1;searchIndex.push(crateRow);currentIndex+=1;var itemTypes=rawSearchIndex[crate].t;var itemNames=rawSearchIndex[crate].n;var itemPaths=rawSearchIndex[crate].q;var itemDescs=rawSearchIndex[crate].d;var itemParentIdxs=rawSearchIndex[crate].i;var itemFunctionSearchTypes=rawSearchIndex[crate].f;var paths=rawSearchIndex[crate].p;var aliases=rawSearchIndex[crate].a;var len=paths.length;for(i=0;i0?paths[itemParentIdxs[i]-1]:undefined,type:itemFunctionSearchTypes[i],id:id,normalizedName:normalizedName,};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(!aliases.hasOwnProperty(alias_name)){continue}if(!ALIASES[crate].hasOwnProperty(alias_name)){ALIASES[crate][alias_name]=[]}local_aliases=aliases[alias_name];for(j=0,len=local_aliases.length;j0){search_input.value=params.search;search(e)}else{search_input.value="";hideSearchResults()}})}window.onpageshow=function(){var qSearch=getQueryStringParams().search;if(search_input.value===""&&qSearch){search_input.value=qSearch}search()}}index=buildIndex(rawSearchIndex);registerSearchEvents();if(getQueryStringParams().search){search()}};function addSidebarCrates(crates){if(window.rootPath==="../"||window.rootPath==="./"){var sidebar=document.getElementsByClassName("sidebar-elems")[0];if(sidebar){var div=document.createElement("div");div.className="block crate";div.innerHTML="

Crates

";var ul=document.createElement("ul");div.appendChild(ul);for(var i=0;i"+""+"
"+code.outerHTML+"
";list.appendChild(display)}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}function labelForToggleButton(sectionIsCollapsed){if(sectionIsCollapsed){return"+"}return"\u2212"}function onEveryMatchingChild(elem,className,func){if(elem&&className&&func){var length=elem.childNodes.length;var nodes=elem.childNodes;for(var i=0;i"+labelForToggleButton(sectionIsCollapsed)+"
]";return toggle}function createToggle(toggle,otherMessage,fontSize,extraClass,show){var span=document.createElement("span");span.className="toggle-label";if(show){span.style.display="none"}if(!otherMessage){span.innerHTML=" Expand description"}else{span.innerHTML=otherMessage}if(fontSize){span.style.fontSize=fontSize}var mainToggle=toggle.cloneNode(true);mainToggle.appendChild(span);var wrapper=document.createElement("div");wrapper.className="toggle-wrapper";if(!show){addClass(wrapper,"collapsed");var inner=mainToggle.getElementsByClassName("inner");if(inner&&inner.length>0){inner[0].innerHTML="+"}}if(extraClass){addClass(wrapper,extraClass)}wrapper.appendChild(mainToggle);return wrapper}(function(){var toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}var toggle=createSimpleToggle(false);var hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";var hideImplementors=getSettingValue("auto-collapse-implementors")!=="false";var func=function(e){var next=e.nextElementSibling;if(next&&hasClass(next,"item-info")){next=next.nextElementSibling}if(!next){return}if(hasClass(next,"docblock")){var newToggle=toggle.cloneNode(true);insertAfter(newToggle,e.childNodes[e.childNodes.length-1]);if(hideMethodDocs===true&&hasClass(e,"method")===true){collapseDocs(newToggle,"hide")}}};var funcImpl=function(e){var next=e.nextElementSibling;if(next&&hasClass(next,"item-info")){next=next.nextElementSibling}if(next&&hasClass(next,"docblock")){next=next.nextElementSibling}if(!next){return}if(hasClass(e,"impl")&&(next.getElementsByClassName("method").length>0||next.getElementsByClassName("associatedconstant").length>0)){var newToggle=toggle.cloneNode(true);insertAfter(newToggle,e.childNodes[e.childNodes.length-1]);if(hideImplementors===true&&e.parentNode.id==="implementors-list"){collapseDocs(newToggle,"hide")}}};onEachLazy(document.getElementsByClassName("method"),func);onEachLazy(document.getElementsByClassName("associatedconstant"),func);onEachLazy(document.getElementsByClassName("impl"),funcImpl);var impl_call=function(){};if(hideMethodDocs===true){impl_call=function(e,newToggle){if(e.id.match(/^impl(?:-\d+)?$/)===null){if(hasClass(e,"impl")===true){collapseDocs(newToggle,"hide")}}}}var newToggle=document.createElement("a");newToggle.href="javascript:void(0)";newToggle.className="collapse-toggle hidden-default collapsed";newToggle.innerHTML="["+labelForToggleButton(true)+"] Show hidden undocumented items";function toggleClicked(){if(hasClass(this,"collapsed")){removeClass(this,"collapsed");onEachLazy(this.parentNode.getElementsByClassName("hidden"),function(x){if(hasClass(x,"content")===false){removeClass(x,"hidden");addClass(x,"x")}},true);this.innerHTML="["+labelForToggleButton(false)+"] Hide undocumented items"}else{addClass(this,"collapsed");onEachLazy(this.parentNode.getElementsByClassName("x"),function(x){if(hasClass(x,"content")===false){addClass(x,"hidden");removeClass(x,"x")}},true);this.innerHTML="["+labelForToggleButton(true)+"] Show hidden undocumented items"}}onEachLazy(document.getElementsByClassName("impl-items"),function(e){onEachLazy(e.getElementsByClassName("associatedconstant"),func);var hiddenElems=Array.prototype.slice.call(e.getElementsByClassName("hidden"));var needToggle=hiddenElems.some(function(hiddenElem){return hasClass(hiddenElem,"content")===false&&hasClass(hiddenElem,"docblock")===false});if(needToggle===true){var inner_toggle=newToggle.cloneNode(true);inner_toggle.onclick=toggleClicked;e.insertBefore(inner_toggle,e.firstChild);impl_call(e.previousSibling,inner_toggle)}});var currentType=document.getElementsByClassName("type-decl")[0];var className=null;if(currentType){currentType=currentType.getElementsByClassName("rust")[0];if(currentType){currentType.classList.forEach(function(item){if(item!=="main"){className=item;return true}})}}var showItemDeclarations=getSettingValue("auto-hide-"+className);if(showItemDeclarations===null){if(className==="enum"||className==="macro"){showItemDeclarations="false"}else if(className==="struct"||className==="union"||className==="trait"){showItemDeclarations="true"}else{showItemDeclarations=getSettingValue("auto-hide-declarations")}}showItemDeclarations=showItemDeclarations==="false";function buildToggleWrapper(e){if(hasClass(e,"autohide")){var wrap=e.previousElementSibling;if(wrap&&hasClass(wrap,"toggle-wrapper")){var inner_toggle=wrap.childNodes[0];var extra=e.childNodes[0].tagName==="H3";e.style.display="none";addClass(wrap,"collapsed");onEachLazy(inner_toggle.getElementsByClassName("inner"),function(e){e.innerHTML=labelForToggleButton(true)});onEachLazy(inner_toggle.getElementsByClassName("toggle-label"),function(e){e.style.display="inline-block";if(extra===true){e.innerHTML=" Show "+e.childNodes[0].innerHTML}})}}if(e.parentNode.id==="main"){var otherMessage="";var fontSize;var extraClass;if(hasClass(e,"type-decl")){fontSize="20px";otherMessage=" Show declaration";if(showItemDeclarations===false){extraClass="collapsed"}}else if(hasClass(e,"sub-variant")){otherMessage=" Show fields"}else if(hasClass(e,"non-exhaustive")){otherMessage=" This ";if(hasClass(e,"non-exhaustive-struct")){otherMessage+="struct"}else if(hasClass(e,"non-exhaustive-enum")){otherMessage+="enum"}else if(hasClass(e,"non-exhaustive-variant")){otherMessage+="enum variant"}else if(hasClass(e,"non-exhaustive-type")){otherMessage+="type"}otherMessage+=" is marked as non-exhaustive"}else if(hasClass(e.childNodes[0],"impl-items")){extraClass="marg-left"}e.parentNode.insertBefore(createToggle(toggle,otherMessage,fontSize,extraClass,hasClass(e,"type-decl")===false||showItemDeclarations===true),e);if(hasClass(e,"type-decl")===true&&showItemDeclarations===true){collapseDocs(e.previousSibling.childNodes[0],"toggle")}if(hasClass(e,"non-exhaustive")===true){collapseDocs(e.previousSibling.childNodes[0],"toggle")}}}onEachLazy(document.getElementsByClassName("docblock"),buildToggleWrapper);onEachLazy(document.getElementsByClassName("sub-variant"),buildToggleWrapper);autoCollapse(getSettingValue("collapse")==="true");var pageId=getPageId();if(pageId!==null){expandSection(pageId)}}());function createToggleWrapper(tog){var span=document.createElement("span");span.className="toggle-label";span.style.display="none";span.innerHTML=" Expand attributes";tog.appendChild(span);var wrapper=document.createElement("div");wrapper.className="toggle-wrapper toggle-attributes";wrapper.appendChild(tog);return wrapper}(function(){var itemAttributesFunc=function(){};if(getSettingValue("auto-hide-attributes")!=="false"){itemAttributesFunc=function(x){collapseDocs(x.previousSibling.childNodes[0],"toggle")}}var attributesToggle=createToggleWrapper(createSimpleToggle(false));onEachLazy(main.getElementsByClassName("attributes"),function(i_e){var attr_tog=attributesToggle.cloneNode(true);if(hasClass(i_e,"top-attr")===true){addClass(attr_tog,"top-attr")}i_e.parentNode.insertBefore(attr_tog,i_e);itemAttributesFunc(i_e)})}());(function(){var lineNumbersFunc=function(){};if(getSettingValue("line-numbers")==="true"){lineNumbersFunc=function(x){var count=x.textContent.split("\n").length;var elems=[];for(var i=0;i"+getSearchLoadingText()+"";showSearchResults(search)}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")===true){hideSidebar()}else{showSidebar()}}}if(main){onEachLazy(main.getElementsByClassName("loading-content"),function(e){e.remove()});onEachLazy(main.childNodes,function(e){if(e.tagName==="H2"||e.tagName==="H3"){var nextTagName=e.nextElementSibling.tagName;if(nextTagName=="H2"||nextTagName=="H3"){e.nextElementSibling.style.display="flex"}else{e.nextElementSibling.style.display="block"}}})}function addSearchOptions(crates){var elem=document.getElementById("crate-search");if(!elem){return}var savedCrate=getSettingValue("saved-filter-crate");for(var i=0,len=crates.length;ithe 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"],["ctrl + ↑ / ↓","Switch result tab"],["⏎","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);popup.appendChild(container);insertAfter(popup,getSearchElement());buildHelperPopup=function(){}}function loadScript(url){var script=document.createElement('script');script.src=url;document.head.append(script)}function setupSearchLoader(){var searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(window.searchJS)}}addSearchOptions(window.ALL_CRATES);addSidebarCrates(window.ALL_CRATES);search_input.addEventListener("focus",function(){search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});search_input.addEventListener("blur",function(){search_input.placeholder=search_input.origPlaceholder});search_input.removeAttribute('disabled');var crateSearchDropDown=document.getElementById("crate-search");if(crateSearchDropDown){crateSearchDropDown.addEventListener("focus",loadSearch)}var params=getQueryStringParams();if(params.search!==undefined){loadSearch()}}onHashChange(null);window.onhashchange=onHashChange;setupSearchLoader()}()) \ No newline at end of file diff --git a/normalize.css b/normalize.css new file mode 100644 index 0000000..6d692b5 --- /dev/null +++ b/normalize.css @@ -0,0 +1,2 @@ + /*! normalize.css v3.0.0 | MIT License | git.io/normalize */ +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0} \ No newline at end of file diff --git a/noscript.css b/noscript.css new file mode 100644 index 0000000..b833ff8 --- /dev/null +++ b/noscript.css @@ -0,0 +1 @@ + #main>h2+div,#main>h2+h3,#main>h3+div{display:block;}.loading-content{display:none;}#main>h2+div,#main>h3+div{display:block;}#main>h2+h3{display:flex;}#main .impl-items .hidden{display:block !important;}#main .impl-items h4.hidden{display:flex !important;}#main .attributes{margin-left:0 !important;} \ No newline at end of file diff --git a/rust-logo.png b/rust-logo.png new file mode 100644 index 0000000..74b4bd6 Binary files /dev/null and b/rust-logo.png differ diff --git a/rustdoc.css b/rustdoc.css new file mode 100644 index 0000000..e5412cb --- /dev/null +++ b/rustdoc.css @@ -0,0 +1 @@ + @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 Pro';font-style:normal;font-weight:400;src:local('Source Serif Pro'),url("SourceSerifPro-Regular.ttf.woff") format('woff');font-display:swap;}@font-face {font-family:'Source Serif Pro';font-style:italic;font-weight:400;src:local('Source Serif Pro Italic'),url("SourceSerifPro-It.ttf.woff") format('woff');font-display:swap;}@font-face {font-family:'Source Serif Pro';font-style:normal;font-weight:700;src:local('Source Serif Pro Bold'),url("SourceSerifPro-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.woff") format('woff');font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold.woff") format('woff');font-display:swap;}*{-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:16px/1.4 "Source Serif Pro",serif;margin:0;position:relative;padding:10px 15px 20px 15px;-webkit-font-feature-settings:"kern","liga";-moz-font-feature-settings:"kern","liga";font-feature-settings:"kern","liga";}h1{font-size:1.5em;}h2{font-size:1.4em;}h3{font-size:1.3em;}h1,h2,h3:not(.impl):not(.method):not(.type):not(.tymethod):not(.notable),h4:not(.method):not(.type):not(.tymethod):not(.associatedconstant){font-weight:500;margin:20px 0 15px 0;padding-bottom:6px;}h1.fqn{border-bottom:1px dashed;margin-top:0;}h1.fqn>.in-band>a:hover{text-decoration:underline;}h2,h3:not(.impl):not(.method):not(.type):not(.tymethod),h4:not(.method):not(.type):not(.tymethod):not(.associatedconstant){border-bottom:1px solid;}h3.impl,h3.method,h4.method,h3.type,h4.type,h4.associatedconstant{flex-basis:100%;font-weight:600;margin-top:16px;margin-bottom:10px;position:relative;}h3.impl,h3.method,h3.type{padding-left:15px;}h1,h2,h3,h4,.sidebar,a.source,.search-input,.content table td:first-child>a,.collapse-toggle,div.item-list .out-of-band,#source-sidebar,#sidebar-toggle,#main>ul.docblock>li>a{font-family:"Fira Sans",Arial,sans-serif;}.content ul.crate a.crate{font-size:16px/1.6;font-family:"Fira Sans",Arial,sans-serif;}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;}code,pre,a.test-arrow{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,.docblock code.spotlight{padding:0;padding-right:1ex;}.docblock code.spotlight :last-child{padding-bottom:0.6em;}pre{padding:14px;}.source .content pre{padding:20px;}img{max-width:100%;}li{position:relative;}.source .content{margin-top:50px;max-width:none;overflow:visible;margin-left:0px;min-width:70em;}nav.sub{font-size:16px;text-transform:uppercase;}.sidebar{width:200px;position:fixed;left:0;top:0;bottom:0;overflow:auto;}*{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;}.content,nav{max-width:960px;}.hidden{display:none !important;}.logo-container{height:100px;width:100px;position:relative;margin:20px auto;display:block;margin-top:10px;}.logo-container>img{max-width:100px;max-height:100px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:block;}.sidebar .location{border:1px solid;font-size:17px;margin:30px 10px 20px 10px;text-align:center;word-wrap:break-word;}.sidebar .version{font-size:15px;text-align:center;border-bottom:1px solid;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;}.location:empty{border:none;}.location a:first-child{font-weight:500;}.block{padding:0;margin-bottom:14px;}.block h2,.block h3{margin-top:0;margin-bottom:8px;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:14px;font-weight:300;transition:border 500ms ease-out;}.sidebar-title{border-top:1px solid;border-bottom:1px solid;text-align:center;font-size:17px;margin-bottom:5px;}.sidebar-links{margin-bottom:15px;}.sidebar-links>a{padding-left:10px;width:100%;}.sidebar-menu{display:none;}.content{padding:15px 0;}.source .content pre.rust{white-space:pre;overflow:auto;padding-left:0;}.rustdoc:not(.source) .example-wrap{display:inline-flex;margin-bottom:10px;}.example-wrap{position:relative;width:100%;}.example-wrap>pre.line-number{overflow:initial;border:1px solid;border-top-left-radius:5px;border-bottom-left-radius:5px;padding:13px 8px;text-align:right;}.rustdoc:not(.source) .example-wrap>pre.rust{width:100%;overflow-x:auto;}.rustdoc:not(.source) .example-wrap>pre{margin:0;}#search{margin-left:230px;position:relative;}#results{position:absolute;right:0;left:0;overflow:auto;}#results>table{width:100%;table-layout:fixed;margin-bottom:40px;}.content pre.line-numbers{float:left;border:none;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:anywhere;}.docblock-short p{display:inline;}.docblock-short p{overflow:hidden;text-overflow:ellipsis;margin:0;}.docblock-short code{white-space:pre-wrap;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5{border-bottom:1px solid;}#main>.docblock h1{font-size:1.3em;}#main>.docblock h2{font-size:1.15em;}#main>.docblock h3,#main>.docblock h4,#main>.docblock h5{font-size:1em;}#main>h2+div,#main>h2+h3,#main>h3+div{display:none;flex-wrap:wrap;}.docblock h1{font-size:1em;}.docblock h2{font-size:0.95em;}.docblock h3,.docblock h4,.docblock h5{font-size:0.9em;}.docblock{margin-left:24px;position:relative;}.content .out-of-band{float:right;font-size:23px;margin:0px;padding:0px;font-weight:normal;}h3.impl>.out-of-band{font-size:21px;}h4.method>.out-of-band{font-size:19px;}h4>code,h3>code,.invisible>code{max-width:calc(100% - 41px);display:block;}.invisible{width:100%;display:inline-block;}.content .in-band{margin:0px;padding:0px;}.in-band>code{display:inline-block;}#main{position:relative;}#main>.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.1em;}.content tr:first-child td{border-top:0;}.docblock table{margin:.5em 0;width:calc(100% - 2px);border:1px dashed;}.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 .method{font-size:1em;position:relative;}.content .method .where,.content .fn .where,.content .where.fmt-newline{display:block;font-size:0.8em;}.content .methods>div:not(.notable-traits){margin-left:40px;margin-bottom:15px;}.content .docblock>.impl-items{margin-left:20px;margin-top:-34px;}.content .docblock>.impl-items>h4{border-bottom:0;}.content .docblock>.impl-items .table-display{margin:0;}.content .docblock>.impl-items table td{padding:0;}.toggle-wrapper.marg-left>.collapse-toggle{left:-24px;}.content .docblock>.impl-items .table-display,.impl-items table td{border:none;}.content .item-info code{font-size:90%;}.content .item-info{position:relative;margin-left:33px;margin-top:-13px;}.sub-variant>div>.item-info{margin-top:initial;}.content .item-info::before{content:'⬑';font-size:25px;position:absolute;top:-6px;left:-19px;}.content .impl-items .method,.content .impl-items>.type,.impl-items>.associatedconstant{margin-left:20px;}.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>.item-info{margin-top:0;}nav:not(.sidebar){border-bottom:1px solid;padding-bottom:10px;margin-bottom:10px;}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;}nav.sub,.content{margin-left:230px;}a{text-decoration:none;background:transparent;}.small-section-header:hover>.anchor{display:initial;}.in-band:hover>.anchor,.impl:hover>.anchor{display:inline-block;position:absolute;}.anchor{display:none;position:absolute;left:-7px;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-28px;padding-right:10px;}.anchor:before{content:'\2002\00a7\2002';}.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,h4>code+.srclink,h3>code+.srclink{position:absolute;top:0;right:0;font-size:17px;font-weight:normal;}.block a.current.crate{font-weight:500;}.search-container{position:relative;}.search-container>div{display:inline-flex;width:calc(100% - 63px);}#crate-search{min-width:115px;margin-top:5px;padding:6px;padding-right:19px;flex:none;border:0;border-right:0;border-radius:4px 0 0 4px;outline:none;cursor:pointer;border-right:1px solid;-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%;}.search-container>.top-button{position:absolute;right:0;top:10px;}.search-input{-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:17px;transition:border-color 300ms ease;transition:border-radius 300ms ease-in-out;transition:box-shadow 300ms ease-in-out;width:100%;}#crate-search+.search-input{border-radius:0 1px 1px 0;width:calc(100% - 32px);}.search-input:focus{border-radius:2px;border:0;outline:0;}.search-results .desc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;}.search-results a{display:block;}.content .search-results td:first-child{padding-right:0;width:50%;}.content .search-results td:first-child a{padding-right:10px;}.content .search-results td:first-child a:after{clear:both;content:"";display:block;}.content .search-results td:first-child a span{float:left;}tr.result span.primitive::after{content:' (primitive type)';font-style:italic;}tr.result span.keyword::after{content:' (keyword)';font-style:italic;}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>div>span{text-align:center;display:block;margin:10px 0;font-size:18px;border-bottom:1px solid #ccc;padding-bottom:4px;margin-bottom:6px;}#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;;}.stab{display:table;border-width:1px;border-style:solid;padding:3px;margin-bottom:5px;font-size:90%;}.stab p{display:inline;}.stab summary{display:list-item;}.stab .emoji{font-size:1.5em;}.module-item .stab{border-radius:3px;display:inline-block;font-size:80%;line-height:1.2;margin-bottom:0;margin-right:.3em;padding:2px;vertical-align:text-bottom;}.module-item.unstable{opacity:0.65;}.since{font-weight:normal;font-size:initial;position:absolute;right:0;top:0;}.impl-items .since,.impl .since,.methods .since{flex-grow:0;padding-left:12px;padding-right:2px;position:initial;}.impl-items .srclink,.impl .srclink,.methods .srclink{flex-grow:0;font-size:17px;font-weight:normal;}.impl-items code,.impl code,.methods code{flex-grow:1;}.impl-items h4,h4.impl,h3.impl,.methods h3{display:flex;flex-basis:100%;font-size:16px;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;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:130%;top:5px;right:5px;z-index:1;}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;}.section-header a{color:inherit;}.collapse-toggle{font-weight:300;position:absolute;left:-23px;top:0;}h3>.collapse-toggle,h4>.collapse-toggle{font-size:0.8em;top:5px;}.toggle-wrapper>.collapse-toggle{left:-24px;margin-top:0px;}.toggle-wrapper{position:relative;margin-top:0;}.toggle-wrapper.collapsed{height:25px;transition:height .2s;margin-bottom:.6em;}.collapse-toggle>.inner{display:inline-block;width:1.2ch;text-align:center;}.collapse-toggle.hidden-default{position:relative;margin-left:20px;}.since+.srclink{display:table-cell;padding-left:10px;}.item-spacer{width:100%;height:12px;}.out-of-band>span.since{position:initial;font-size:20px;margin-right:5px;}.toggle-wrapper>.collapse-toggle{left:0;}.variant+.toggle-wrapper+.docblock>p{margin-top:5px;}.sub-variant,.sub-variant>h3{margin-top:1px !important;}#main>.sub-variant>h3{font-size:15px;margin-left:25px;margin-bottom:5px;}.sub-variant>div{margin-left:20px;margin-bottom:10px;}.sub-variant>div>span{display:block;position:relative;}.toggle-label{display:inline-block;margin-left:4px;margin-top:3px;}.enum>.toggle-wrapper+.docblock,.struct>.toggle-wrapper+.docblock{margin-left:30px;margin-bottom:20px;margin-top:5px;}.docblock>.section-header:first-child{margin-left:15px;margin-top:0;}.docblock>.section-header:first-child:hover>a:before{left:-10px;}.enum>.collapsed,.struct>.collapsed{margin-bottom:25px;}#main>.variant,#main>.structfield{display:block;}.attributes{display:block;margin-top:0px !important;margin-right:0px;margin-bottom:0px !important;margin-left:30px;}.toggle-attributes.collapsed{margin-bottom:0;}.impl-items>.toggle-attributes{margin-left:20px;}.impl-items .attributes{font-weight:500;}:target>code{opacity:1;}.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:16px;}.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:20px;}.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:16px;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 .docblock code.content{margin:0;padding:0;font-size:20px;}pre.rust.rust-example-rendered{position:relative;}pre.rust{tab-size:4;-moz-tab-size:4;}.search-failed{text-align:center;margin-top:20px;}.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:18px;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:16px;}.notable-traits{cursor:pointer;z-index:2;margin-left:5px;}h4>.notable-traits{position:absolute;left:-44px;top:2px;}#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:fixed;top:30px;left:300px;z-index:10;padding:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer;font-weight:bold;transition:left .5s;font-size:1.2em;border:1px solid;border-left:0;}#source-sidebar{position:fixed;top:0;bottom:0;left:0;width:300px;z-index:1;overflow:auto;transition:left .5s;border-right:1px solid;}#source-sidebar>.title{font-size:1.5em;text-align:center;border-bottom:1px solid;margin-bottom:6px;}.theme-picker{position:absolute;left:211px;top:19px;}.theme-picker button{outline:none;}#settings-menu,.help-button{position:absolute;top:10px;}#settings-menu{right:0;outline:none;}.help-button{right:30px;font-family:"Fira Sans",Arial,sans-serif;text-align:center;font-size:17px;}#theme-picker,#settings-menu,.help-button{padding:4px;width:27px;height:29px;border:1px solid;border-radius:3px;cursor:pointer;}#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);}#theme-choices>button:not(:first-child){border-top:1px solid;}@media (min-width:701px){.information:first-child>.tooltip{margin-top:16px;}}@media (max-width:700px){body{padding-top:0px;}.rustdoc>.sidebar{height:45px;min-height:40px;margin:0;margin-left:-15px;padding:0 15px;position:static;z-index:11;}.sidebar>.location{float:right;margin:0px;margin-top:2px;padding:3px 10px 1px 10px;min-height:39px;background:inherit;text-align:left;font-size:24px;}.sidebar .location:empty{padding:0;}.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;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;left:0;top:45px;bottom:0;overflow-y:auto;border-right:1px solid;display:none;}.sidebar>.block.version{border-bottom:none;margin-top:12px;margin-bottom:0;}nav.sub{width:calc(100% - 32px);float:right;}.content{margin-left:0px;}#main,#search{margin-top:45px;padding:0;}.content .in-band{width:100%;}.content h4>.out-of-band{position:inherit;}.toggle-wrapper>.collapse-toggle{left:0px;}.toggle-wrapper{height:1.5em;}#search{margin-left:0;}.content .impl-items .method,.content .impl-items>.type,.impl-items>.associatedconstant{display:flex;}.anchor{display:none !important;}h1.fqn{overflow:initial;}.theme-picker{left:10px;top:54px;z-index:1;}h4>.notable-traits{position:absolute;left:-22px;top:24px;}#titles>button>div.count{float:left;width:100%;}#titles{height:50px;}.sidebar.mobile{position:fixed;width:100%;margin-left:0;background-color:rgba(0,0,0,0);height:100%;}.sidebar.mobile>div.version{overflow:hidden;max-height:33px;}.sidebar{width:calc(100% + 30px);}.show-it{display:block;width:246px;}.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:21px;}#sidebar-filler{position:fixed;left:45px;width:calc(100% - 45px);top:0;height:45px;z-index:-1;border-bottom:1px solid;}.collapse-toggle{left:-20px;}.impl>.collapse-toggle{left:-10px;}#all-types{margin:10px;}#sidebar-toggle{top:100px;width:30px;font-size:1.5rem;text-align:center;padding:0;}#source-sidebar{z-index:11;}#main>.line-numbers{margin-top:0;}.notable-traits .notable-traits-tooltiptext{left:0;top:100%;}.help-button{display:none;}.search-container>div{width:calc(100% - 32px);}}@media print{nav.sub,.content .out-of-band,.collapse-toggle{display:none;}}@media (max-width:464px){#titles,#titles>button{height:73px;}#main,#search{margin-top:100px;}#main>table:not(.table-display) td{word-break:break-word;width:50%;}.search-container>div{display:block;width:calc(100% - 37px);}#crate-search{width:100%;border-radius:4px;border:0;}#crate-search+.search-input{width:calc(100% + 71px);margin-left:-36px;}#theme-picker,#settings-menu{padding:5px;width:31px;height:31px;}#theme-picker{margin-top:-2px;}#settings-menu{top:7px;}.docblock{margin-left:12px;}}h3.notable{margin:0;margin-bottom:13px;font-size:19px;}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:16px;}.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:19px;display:block;}#implementors-list>.impl-items .table-display .out-of-band{font-size:17px;}.table-display td:hover .anchor{display:block;top:2px;left:-5px;}#main>ul{padding-left:10px;}#main>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.7em;position:absolute;left:-16px;top:4px;}div.name.expand::before{transform:rotate(90deg);left:-15px;top:2px;}.type-decl>pre>.toggle-wrapper.toggle-attributes.top-attr{margin-left:0 !important;}.type-decl>pre>.docblock.attributes.top-attr{margin-left:1.8em !important;}.type-decl>pre>.toggle-attributes{margin-left:2.2em;}.type-decl>pre>.docblock.attributes{margin-left:4em;} \ No newline at end of file diff --git a/search-index.js b/search-index.js new file mode 100644 index 0000000..8229bb7 --- /dev/null +++ b/search-index.js @@ -0,0 +1,4 @@ +var searchIndex = JSON.parse('{\ +"kvm_rs":{"doc":"","t":[0,3,11,11,0,3,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,3,12,12,12,12,12,12,12,12,12,12,12,3,12,12,3,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,4,13,13,13,13,13,3,11,11,11,11,11,0,3,11,11,0,17,17,17,17,17,17,17,17,17,17,5,5,5,5,5,5,5,5,5,5,17,17,17,5,5,5,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,3,12,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,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,11,11,11,11,11,11,11,11],"n":["kvm","Kvm","new","create_vm","kvm_sys","kvm_regs","rax","rbx","rcx","rdx","rsi","rdi","rsp","rbp","r8","r9","r10","r11","r12","r13","r14","r15","rip","rflags","kvm_segment","base","limit","selector","type_","present","dpl","db","s","l","g","avl","kvm_dtable","base","limit","kvm_sregs","cs","ds","es","fs","gs","ss","tr","ldt","gdt","idt","cr0","cr2","cr3","cr4","cr8","efer","apic_base","interrupt_bitmap","vcpu","KvmExit","Halt","IoIn","IoOut","MmioRead","MmioWrite","Vcpu","get_regs","set_regs","get_sregs","set_sregs","run","vm","Vm","set_user_memory_region","create_vpcu","x86_64","RFLAGS_CF","RFLAGS_PF","RFLAGS_AF","RFLAGS_ZF","RFLAGS_SF","RFLAGS_IF","RFLAGS_DF","RFLAGS_OF","RFLAGS_IOPL","RFLAGS_AC","rflags_cf","rflags_pf","rflags_af","rflags_zf","rflags_sf","rflags_if","rflags_df","rflags_of","rflags_iopl","rflags_ac","SEG_SELECTOR_RPL","SEG_SELECTOR_TI","SEG_SELECTOR_INDEX","seg_selector_rpl","seg_selector_ti","seg_selector_index","CR0_PE","CR0_MP","CR0_EM","CR0_TS","CR0_ET","CR0_NE","CR0_WP","CR0_AM","CR0_NW","CR0_CD","CR0_PG","CR3_PAGE_BASE_MASK","CR3_PWT","CR3_PCD","CR4_PAE","CR4_LA57","MSR_EFER","EFER_LME","EFER_LMA","PAGE_ENTRY_PRESENT","PAGE_RENTRY_RW","PhysAddr","0","UserMem","new","with_init","load","from","into","borrow","borrow_mut","try_from","try_into","type_id","from","into","to_string","borrow","borrow_mut","try_from","try_into","type_id","from","into","to_string","borrow","borrow_mut","try_from","try_into","type_id","from","into","to_string","borrow","borrow_mut","try_from","try_into","type_id","from","into","to_string","borrow","borrow_mut","try_from","try_into","type_id","from","into","borrow","borrow_mut","try_from","try_into","type_id","from","into","borrow","borrow_mut","try_from","try_into","type_id","from","into","borrow","borrow_mut","try_from","try_into","type_id","from","into","borrow","borrow_mut","try_from","try_into","type_id","from","into","borrow","borrow_mut","try_from","try_into","type_id","drop","as_mut","as_ref","default","default","default","default","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt"],"q":["kvm_rs","kvm_rs::kvm","","","kvm_rs","kvm_rs::kvm_sys","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","kvm_rs","kvm_rs::vcpu","","","","","","","","","","","","kvm_rs","kvm_rs::vm","","","kvm_rs","kvm_rs::x86_64","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","kvm_rs","","","","","","kvm_rs::kvm","","","","","","","kvm_rs::kvm_sys","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","kvm_rs::vcpu","","","","","","","","","","","","","","kvm_rs::vm","","","","","","","kvm_rs","","","","","","","","","","","","","","","","","kvm_rs::kvm_sys","","","","","","","","","","",""],"d":["KVM system ioctls.","Wrapper for /dev/kvm ioctls.","Open the /dev/kvm device.","Create a new virtual machine with the KVM_CREATE_VM ioctl.…","Definitions of the system header .","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","VCPU system ioctls.","Exit reasons for the [Vcpu::kvm_run][…","","","","","","Wrapper for VCPU ioctls.","Get the general purpose registers with the KVM_GET_REGS …","Set the general purpose registers with the KVM_SET_REGS …","Get the special registers with the KVM_GET_SREGS ioctl in …","Set the special registers with the KVM_SET_SREGS ioctl in …","Run the guest VCPU with the KVM_RUN ioctl until it exits …","VM system ioctls.","Wrapper for VM ioctls.","Map memory from userspace into the VM as guest physical …","Create a new virtual cpu with the KVM_CREATE_VCPU ioctl. …","x86_64 flags and bitfields.","Carry flag.","Parity flag.","Adjust flag.","Zero flag.","Sign flag.","Sign flag.","Direction flag.","Overflow flag.","I/O privilege level.","Alignment check.","","","","","","","","","","","Requested privilege level.","Table indicator.","Table index.","","","","Protection Enable.","Monitor Coprocessor.","Emulation.","Task Switched.","Extension Type.","Numeric Error.","Write Protect.","Alignment Mask.","Not Write-Torugh.","Cachine disable.","Paging.","Mask for physical base address of paging structure.","Page-level Write-Through.","Page-level Cache Disable.","Physical Address Extenstion.","57-bit Linear Addresses.","Extended Feature Enable Register MSR number.","Long Mode Enable.","Long Mode Active (readonly).","Page entry present.","Page region read/write.","Strong type representing physical addresses.","","Wrapper to safely allocate memory for guest VMs.","Allocate a zero-initialized memory region of len bytes.","Allocate a zero-initialized memory region of len bytes …","Load the bytes stored in data into memory at physical …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Free underlying memory.","","","","","","","","","","","","","",""],"i":[0,0,1,1,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,3,3,3,3,3,3,3,3,3,3,3,0,4,4,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,6,6,6,6,6,0,7,7,7,7,7,0,0,8,8,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,9,0,10,10,10,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,7,7,7,7,7,7,7,8,8,8,8,8,8,8,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,2,3,4,5,2,3,4,5,2,3,4,5],"f":[null,null,[[],[["kvm",3],["result",6]]],[[],[["result",6],["vm",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,[[],[["result",6],["kvm_regs",3]]],[[["kvm_regs",3]],["result",6]],[[],[["result",6],["kvm_sregs",3]]],[[["kvm_sregs",3]],["result",6]],[[],[["result",6],["kvmexit",4]]],null,null,[[["physaddr",3],["usermem",3]],["result",6]],[[["u64",15]],[["result",6],["vcpu",3]]],null,null,null,null,null,null,null,null,null,null,null,[[["u64",15]],["u64",15]],[[["u64",15]],["u64",15]],[[["u64",15]],["u64",15]],[[["u64",15]],["u64",15]],[[["u64",15]],["u64",15]],[[["u64",15]],["u64",15]],[[["u64",15]],["u64",15]],[[["u64",15]],["u64",15]],[[["u64",15]],["u64",15]],[[["u64",15]],["u64",15]],null,null,null,[[["u16",15]],["u16",15]],[[["u16",15]],["u16",15]],[[["u16",15]],["u16",15]],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]],[["result",6],["usermem",3]]],[[["usize",15]],[["result",6],["usermem",3]]],[[["physaddr",3]]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[],["string",3]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[],["string",3]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[],["string",3]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[],["string",3]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],[[]],[[]],[[],["kvm_regs",3]],[[],["kvm_segment",3]],[[],["kvm_dtable",3]],[[],["kvm_sregs",3]],[[["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]]],"p":[[3,"Kvm"],[3,"kvm_regs"],[3,"kvm_segment"],[3,"kvm_dtable"],[3,"kvm_sregs"],[4,"KvmExit"],[3,"Vcpu"],[3,"Vm"],[3,"PhysAddr"],[3,"UserMem"]]}\ +}'); +initSearch(searchIndex); \ No newline at end of file diff --git a/settings.css b/settings.css new file mode 100644 index 0000000..6709865 --- /dev/null +++ b/settings.css @@ -0,0 +1 @@ +.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/settings.html b/settings.html new file mode 100644 index 0000000..1179ce1 --- /dev/null +++ b/settings.html @@ -0,0 +1,7 @@ +Rustdoc settings + +

Rustdoc settings

Theme preferences
Use system theme
Preferred dark theme
Preferred light theme
+
Auto-hide item declarations
Auto-hide structs declaration
Auto-hide enums declaration
Auto-hide unions declaration
Auto-hide traits declaration
Auto-hide macros declaration
+
Auto-hide item attributes.
Auto-hide item methods' documentation
Auto-hide trait implementation documentation
Auto-hide implementors of a trait
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/settings.js b/settings.js new file mode 100644 index 0000000..b4d6fdc --- /dev/null +++ b/settings.js @@ -0,0 +1 @@ +(function(){function changeSetting(settingName,value){updateLocalStorage("rustdoc-"+settingName,value);switch(settingName){case"preferred-dark-theme":case"preferred-light-theme":case"use-system-theme":updateSystemTheme();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 setEvents(){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/source-files.js b/source-files.js new file mode 100644 index 0000000..b005593 --- /dev/null +++ b/source-files.js @@ -0,0 +1,3 @@ +var N = null;var sourcesIndex = {}; +sourcesIndex["kvm_rs"] = {"name":"","files":["fmt.rs","kvm.rs","kvm_sys.rs","lib.rs","vcpu.rs","vm.rs","x86_64.rs"]}; +createSourceSidebar(); diff --git a/source-script.js b/source-script.js new file mode 100644 index 0000000..67f62a1 --- /dev/null +++ b/source-script.js @@ -0,0 +1 @@ +function getCurrentFilePath(){var parts=window.location.pathname.split("/");var rootPathParts=window.rootPath.split("/");for(var i=0,len=rootPathParts.length;i"){sidebar.style.left="";this.style.left="";child.innerText="<";updateLocalStorage("rustdoc-source-sidebar-show","true")}else{sidebar.style.left="-300px";this.style.left="0";child.innerText=">";updateLocalStorage("rustdoc-source-sidebar-show","false")}}function createSidebarToggle(){var sidebarToggle=document.createElement("div");sidebarToggle.id="sidebar-toggle";sidebarToggle.onclick=toggleSidebar;var inner1=document.createElement("div");inner1.style.position="relative";var inner2=document.createElement("div");inner2.style.paddingTop="3px";if(getCurrentValue("rustdoc-source-sidebar-show")==="true"){inner2.innerText="<"}else{inner2.innerText=">";sidebarToggle.style.left="0"}inner1.appendChild(inner2);sidebarToggle.appendChild(inner1);return sidebarToggle}function createSourceSidebar(){if(window.rootPath.endsWith("/")===false){window.rootPath+="/"}var main=document.getElementById("main");var sidebarToggle=createSidebarToggle();main.insertBefore(sidebarToggle,main.firstChild);var sidebar=document.createElement("div");sidebar.id="source-sidebar";if(getCurrentValue("rustdoc-source-sidebar-show")!=="true"){sidebar.style.left="-300px"}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)});main.insertBefore(sidebar,main.firstChild);var selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}} \ No newline at end of file diff --git a/src/kvm_rs/fmt.rs.html b/src/kvm_rs/fmt.rs.html new file mode 100644 index 0000000..ec871ef --- /dev/null +++ b/src/kvm_rs/fmt.rs.html @@ -0,0 +1,265 @@ +fmt.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
+
+use std::fmt;
+
+use crate::kvm_sys::{kvm_dtable, kvm_regs, kvm_segment, kvm_sregs};
+use crate::x86_64::*;
+
+impl fmt::Display for kvm_regs {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        write!(
+            f,
+            "rax: {:#018x} rbx: {:#018x} rcx: {:#018x} rdx: {:#018x}\n\
+             rsi: {:#018x} rdi: {:#018x}\n\
+             r8 : {:#018x} r9 : {:#018x} r10: {:#018x} r11: {:#018x}\n\
+             r12: {:#018x} r13: {:#018x} r14: {:#018x} r15: {:#018x}\n\
+             rsp: {:#018x} rbp: {:#018x}\n\
+             rip: {:#018x} rfl: {:#018x} O({}) D({}) I({}) S({}) Z({}) P({}) C({})",
+            self.rax,
+            self.rbx,
+            self.rcx,
+            self.rdx,
+            self.rsi,
+            self.rdi,
+            self.r8,
+            self.r9,
+            self.r10,
+            self.r11,
+            self.r12,
+            self.r13,
+            self.r14,
+            self.r15,
+            self.rsp,
+            self.rbp,
+            self.rip,
+            self.rflags,
+            rflags_of(self.rflags),
+            rflags_df(self.rflags),
+            rflags_if(self.rflags),
+            rflags_sf(self.rflags),
+            rflags_zf(self.rflags),
+            rflags_pf(self.rflags),
+            rflags_cf(self.rflags),
+        )
+    }
+}
+
+impl fmt::Display for kvm_segment {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        if self.present == 0 {
+            write!(f, "{:#04x} P(0)", self.selector)
+        } else {
+            write!(
+                f,
+                "{:#06x} T({}) RPL({}) BASE({:#010x}) LIMIT({:#07x}) P(1) S({}) DPL({}) DB({}) L({}) TYPE({})",
+                self.selector,
+                if seg_selector_ti(self.selector) == 0 {
+                    "GDT"
+                } else {
+                    "LDT"
+                },
+                seg_selector_rpl(self.selector),
+                self.base,
+                self.limit,
+                self.s,
+                self.dpl,
+                self.db,
+                self.l,
+                match self.type_ {
+                    0 => "D:R---",
+                    1 => "D:R-A-",
+                    2 => "D:RW--",
+                    3 => "D:RWA-",
+                    4 => "D:R--E",
+                    5 => "D:R-AE",
+                    6 => "D:RW-E",
+                    7 => "D:RWAE",
+                    8 => "C:X---",
+                    9 => "C:X-A-",
+                    10 => "C:XR--",
+                    11 => "C:XRA-",
+                    12 => "C:X--C",
+                    13 => "C:X-AC",
+                    14 => "C:XR-C",
+                    15 => "C:XRAC",
+                    _ => unreachable!(),
+                }
+            )
+        }
+    }
+}
+
+impl fmt::Display for kvm_dtable {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        write!(f, "BASE({:#018x}) LIMIT({:#07x})", self.base, self.limit)
+    }
+}
+
+impl fmt::Display for kvm_sregs {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        write!(
+            f,
+            "cs  : {}\n\
+             ds  : {}\n\
+             es  : {}\n\
+             fs  : {}\n\
+             gs  : {}\n\
+             ss  : {}\n\
+             tr  : {}\n\
+             ldt : {}\n\
+             gdt : {}\n\
+             idt : {}\n\
+             cr0 : {:#018x} cr2: {:#018x} cr3: {:#018x} cr4: {:#018x}\n\
+             efer: {:#018x}",
+            self.cs,
+            self.ds,
+            self.es,
+            self.fs,
+            self.gs,
+            self.ss,
+            self.tr,
+            self.ldt,
+            self.gdt,
+            self.idt,
+            self.cr0,
+            self.cr2,
+            self.cr3,
+            self.cr4,
+            self.efer,
+        )
+    }
+}
+
+
+ \ No newline at end of file diff --git a/src/kvm_rs/kvm.rs.html b/src/kvm_rs/kvm.rs.html new file mode 100644 index 0000000..ccd6c37 --- /dev/null +++ b/src/kvm_rs/kvm.rs.html @@ -0,0 +1,111 @@ +kvm.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
+
+//! KVM system ioctls.
+
+use std::fs;
+use std::io;
+use std::os::unix::io::FromRawFd;
+
+use crate::{libcret, ioctl, kvm_sys};
+use crate::vm::Vm;
+
+/// Wrapper for `/dev/kvm` ioctls.
+///
+/// Representation of the file descriptor obtained by opening `/dev/kvm`.
+/// This wrapper provides access to the `system ioctls` as described in [KVM API][kvm].
+///
+/// [kvm]: https://www.kernel.org/doc/html/latest/virt/kvm/api.html#general-description
+pub struct Kvm {
+    kvm: fs::File,
+}
+
+impl Kvm {
+    /// Open the `/dev/kvm` device.
+    pub fn new() -> io::Result<Kvm> {
+        let kvm = libcret(unsafe {
+            libc::open("/dev/kvm\0".as_ptr().cast(), libc::O_RDWR | libc::O_CLOEXEC)
+        })
+        .map(|fd| unsafe { fs::File::from_raw_fd(fd) })?;
+
+        assert_eq!(
+            kvm_sys::KVM_API_VERSION,
+            ioctl(&kvm, kvm_sys::KVM_GET_API_VERSION, 0)?
+        );
+
+        Ok(Kvm { kvm })
+    }
+
+    fn get_vpcu_mmap_size(&self) -> io::Result<usize> {
+        ioctl(&self.kvm, kvm_sys::KVM_GET_VCPU_MMAP_SIZE, 0).map(|size| size as usize)
+    }
+
+    /// Create a new virtual machine with the [`KVM_CREATE_VM`][kvm-create-vm] ioctl.
+    /// Returns a wrapper [`vm::Vm`][crate::vm::Vm] representing the VM.
+    ///
+    /// [kvm-create-vm]: https://www.kernel.org/doc/html/latest/virt/kvm/api.html#kvm-create-vm
+    pub fn create_vm(&self) -> io::Result<Vm> {
+        let vm = ioctl(&self.kvm, kvm_sys::KVM_CREATE_VM, 0 /* machine id */)
+            .map(|fd| unsafe { fs::File::from_raw_fd(fd) })?;
+
+        let vcpu_mmap_size = self.get_vpcu_mmap_size()?;
+
+        Ok(Vm::new(vm, vcpu_mmap_size))
+    }
+}
+
+
+ \ No newline at end of file diff --git a/src/kvm_rs/kvm_sys.rs.html b/src/kvm_rs/kvm_sys.rs.html new file mode 100644 index 0000000..44136b6 --- /dev/null +++ b/src/kvm_rs/kvm_sys.rs.html @@ -0,0 +1,401 @@ +kvm_sys.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
+
+//! Definitions of the system header [`<linux/kvm.h>`][kvm-h].
+//!
+//! [kvm-h]: https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/kvm.h
+
+#![allow(non_snake_case)]
+#![allow(non_camel_case_types)]
+#![allow(dead_code)]
+
+// Generated by `build.rs`.
+include!(concat!(env!("OUT_DIR"), "/kvm_constants.rs"));
+
+#[repr(C)]
+#[derive(Default, Debug)]
+pub struct kvm_regs {
+    pub rax: u64,
+    pub rbx: u64,
+    pub rcx: u64,
+    pub rdx: u64,
+    pub rsi: u64,
+    pub rdi: u64,
+    pub rsp: u64,
+    pub rbp: u64,
+    pub r8: u64,
+    pub r9: u64,
+    pub r10: u64,
+    pub r11: u64,
+    pub r12: u64,
+    pub r13: u64,
+    pub r14: u64,
+    pub r15: u64,
+    pub rip: u64,
+    pub rflags: u64,
+}
+
+#[repr(C)]
+#[derive(Default, Debug)]
+pub struct kvm_segment {
+    pub base: u64,
+    pub limit: u32,
+    pub selector: u16,
+    pub type_: u8,
+    pub present: u8,
+    pub dpl: u8,
+    pub db: u8,
+    pub s: u8,
+    pub l: u8,
+    pub g: u8,
+    pub avl: u8,
+    unusable: u8,
+    _padding: u8,
+}
+
+#[repr(C)]
+#[derive(Default, Debug)]
+pub struct kvm_dtable {
+    pub base: u64,
+    pub limit: u16,
+    _padding: [u16; 3],
+}
+
+#[repr(C)]
+#[derive(Default, Debug)]
+pub struct kvm_sregs {
+    pub cs: kvm_segment,
+    pub ds: kvm_segment,
+    pub es: kvm_segment,
+    pub fs: kvm_segment,
+    pub gs: kvm_segment,
+    pub ss: kvm_segment,
+    pub tr: kvm_segment,
+    pub ldt: kvm_segment,
+    pub gdt: kvm_dtable,
+    pub idt: kvm_dtable,
+    pub cr0: u64,
+    pub cr2: u64,
+    pub cr3: u64,
+    pub cr4: u64,
+    pub cr8: u64,
+    pub efer: u64,
+    pub apic_base: u64,
+    pub interrupt_bitmap: [u64; 4],
+}
+
+#[repr(C)]
+#[derive(Default, Debug)]
+pub(crate) struct kvm_userspace_memory_region {
+    pub slot: u32,
+    pub flags: u32,
+    pub guest_phys_addr: u64,
+    pub memory_size: u64,
+    pub userspace_addr: u64,
+}
+
+#[repr(C)]
+pub(crate) struct kvm_run {
+    request_interrupt_window: u8,
+    immediate_exit: u8,
+    padding1: [u8; 6],
+    pub exit_reason: u32,
+    ready_for_interrupt_injection: u8,
+    if_flag: u8,
+    flags: u16,
+    cr8: u64,
+    apic_base: u64,
+    pub inner: kvm_run_union,
+    kvm_valid_regs: u64,
+    kvm_dirty_regs: u64,
+    s: kvm_run_union_s,
+}
+
+#[repr(C)]
+#[derive(Copy, Clone, Debug)]
+pub(crate) struct kvm_run_io {
+    pub direction: u8,
+    pub size: u8,
+    pub port: u16,
+    pub count: u32,
+    pub data_offset: u64,
+}
+
+#[repr(C)]
+#[derive(Copy, Clone, Debug)]
+pub(crate) struct kvm_run_mmio {
+    pub phys_addr: u64,
+    pub data: [u8; 8],
+    pub len: u32,
+    pub is_write: u8,
+}
+
+// Only add the union fields used here.
+#[repr(C)]
+pub(crate) union kvm_run_union {
+    pub io: kvm_run_io,
+    pub mmio: kvm_run_mmio,
+    padding: [u8; 256],
+}
+
+// Only add the union fields used here.
+#[repr(C)]
+union kvm_run_union_s {
+    padding: [u8; 2048],
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use std::mem;
+
+    #[test]
+    fn check_kvm_regs() {
+        assert_eq!(mem::size_of::<kvm_regs>(), TEST_KVM_REGS_SIZE);
+        assert_eq!(mem::align_of::<kvm_regs>(), TEST_KVM_REGS_ALIGN);
+    }
+
+    #[test]
+    fn check_kvm_segment() {
+        assert_eq!(mem::size_of::<kvm_segment>(), TEST_KVM_SEGMENT_SIZE);
+        assert_eq!(mem::align_of::<kvm_segment>(), TEST_KVM_SEGMENT_ALIGN);
+    }
+
+    #[test]
+    fn check_kvm_dtable() {
+        assert_eq!(mem::size_of::<kvm_dtable>(), TEST_KVM_DTABLE_SIZE);
+        assert_eq!(mem::align_of::<kvm_dtable>(), TEST_KVM_DTABLE_ALIGN);
+    }
+
+    #[test]
+    fn check_kvm_sregs() {
+        assert_eq!(mem::size_of::<kvm_sregs>(), TEST_KVM_SREGS_SIZE);
+        assert_eq!(mem::align_of::<kvm_sregs>(), TEST_KVM_SREGS_ALIGN);
+        assert_eq!(
+            mem::size_of_val(&kvm_sregs::default().interrupt_bitmap),
+            TEST_KVM_SREGS_INTERRTUP_BITMAP_SIZE
+        );
+    }
+
+    #[test]
+    fn check_kvm_userspace_memory_region() {
+        assert_eq!(
+            mem::size_of::<kvm_userspace_memory_region>(),
+            TEST_KVM_USERSPACE_MEMORY_REGION_SIZE
+        );
+        assert_eq!(
+            mem::align_of::<kvm_userspace_memory_region>(),
+            TEST_KVM_USERSPACE_MEMORY_REGION_ALIGN
+        );
+    }
+
+    #[test]
+    fn check_kvm_run() {
+        assert_eq!(mem::size_of::<kvm_run>(), TEST_KVM_RUN_SIZE);
+        assert_eq!(mem::align_of::<kvm_run>(), TEST_KVM_RUN_ALIGN);
+        assert_eq!(mem::size_of::<kvm_run_io>(), TEST_KVM_RUN_IO_SIZE);
+        assert_eq!(mem::size_of::<kvm_run_mmio>(), TEST_KVM_RUN_MMIO_SIZE);
+        assert_eq!(mem::size_of::<kvm_run_union_s>(), TEST_KVM_RUN_UNION_S_SIZE);
+    }
+}
+
+
+ \ No newline at end of file diff --git a/src/kvm_rs/lib.rs.html b/src/kvm_rs/lib.rs.html new file mode 100644 index 0000000..8d74487 --- /dev/null +++ b/src/kvm_rs/lib.rs.html @@ -0,0 +1,337 @@ +lib.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
+
+use std::convert::{AsMut, AsRef};
+use std::io;
+use std::ops;
+use std::os::unix::io::AsRawFd;
+
+mod fmt;
+pub mod kvm;
+pub mod kvm_sys;
+pub mod vcpu;
+pub mod vm;
+pub mod x86_64;
+
+/// Strong type representing physical addresses.
+pub struct PhysAddr(pub u64);
+
+/// Helper to turn libc return values into an [io::Result](std::io::Result). Returns
+/// [`Error::last_os_error`](std::io::Error::last_os_error) if `ret < 0`.
+fn libcret(ret: libc::c_int) -> io::Result<libc::c_int> {
+    if ret < 0 {
+        Err(io::Error::last_os_error())
+    } else {
+        Ok(ret)
+    }
+}
+
+/// Wrapper of `libc::ioctl` for KVM ioctls with one argument and returning an
+/// [`io::Result`](std::io::Result).
+fn ioctl<F: AsRawFd>(fd: &F, cmd: u64, arg: u64) -> io::Result<libc::c_int> {
+    libcret(unsafe { libc::ioctl(fd.as_raw_fd(), cmd, arg) })
+}
+
+/// Wrapper to safely allocate memory for guest VMs.
+///
+/// The underlying memory is freed automatically once the `UserMem` instance is dropped.
+///
+/// Memory can be mapped into a guest VM with
+/// [`Vm::set_user_memory_region`](crate::vm::Vm::set_user_memory_region).
+pub struct UserMem {
+    ptr: *mut u8,
+    len: usize,
+}
+
+impl UserMem {
+    /// Allocate a zero-initialized memory region of `len` bytes.
+    pub fn new(len: usize) -> io::Result<UserMem> {
+        let ptr = unsafe {
+            libc::mmap(
+                std::ptr::null_mut(),
+                len,
+                libc::PROT_READ | libc::PROT_WRITE,
+                libc::MAP_PRIVATE | libc::MAP_ANONYMOUS,
+                -1,
+                0,
+            )
+        };
+
+        if ptr == libc::MAP_FAILED {
+            Err(io::Error::last_os_error())
+        } else {
+            Ok(UserMem {
+                ptr: ptr.cast(),
+                len,
+            })
+        }
+    }
+
+    /// Allocate a zero-initialized memory region of `len` bytes and initialize the first bytes
+    /// with `init_from`.
+    ///
+    /// # Panics
+    ///
+    /// Panics if `init_from` is larger than the memory size `len`.
+    pub fn with_init(len: usize, init_from: &[u8]) -> io::Result<UserMem> {
+        assert!(len >= init_from.len());
+
+        let mut m = UserMem::new(len)?;
+        m.load(PhysAddr(0), init_from);
+        Ok(m)
+    }
+
+    /// Load the bytes stored in `data` into memory at physical address `addr`.
+    ///
+    /// # Panics
+    ///
+    /// Panics if `addr + data.len` is larger than the memory size `len`.
+    pub fn load(&mut self, addr: PhysAddr, data: &[u8]) {
+        assert!(self.len >= addr.0 as usize + data.len());
+
+        let addr = addr.0 as usize;
+        self.as_mut()[addr..addr + data.len()].copy_from_slice(data);
+    }
+}
+
+impl ops::Drop for UserMem {
+    /// Free underlying memory.
+    fn drop(&mut self) {
+        unsafe { libc::munmap(self.ptr.cast(), self.len) };
+    }
+}
+
+impl AsRef<[u8]> for UserMem {
+    fn as_ref(&self) -> &[u8] {
+        unsafe { std::slice::from_raw_parts(self.ptr, self.len) }
+    }
+}
+
+impl AsMut<[u8]> for UserMem {
+    fn as_mut(&mut self) -> &mut [u8] {
+        unsafe { std::slice::from_raw_parts_mut(self.ptr, self.len) }
+    }
+}
+
+/// Internal wrapper to automatically `mmap` and `munmap` the the [`struct kvm_run`][kvm_run]
+/// for a given VPCU.
+///
+/// [kvm_run]: https://www.kernel.org/doc/html/latest/virt/kvm/api.html#the-kvm-run-structure
+struct KvmRun {
+    ptr: *mut kvm_sys::kvm_run,
+    len: usize,
+}
+
+impl KvmRun {
+    /// Mmap the `struct kvm_run` for a given `VCPU` referenced by the argument file descriptor
+    /// `vcpu`.
+    fn new<F: AsRawFd>(vcpu: &F, len: usize) -> io::Result<KvmRun> {
+        let ptr = unsafe {
+            libc::mmap(
+                std::ptr::null_mut(),
+                len,
+                libc::PROT_READ | libc::PROT_WRITE,
+                libc::MAP_SHARED,
+                vcpu.as_raw_fd(),
+                0,
+            )
+        };
+
+        if ptr == libc::MAP_FAILED {
+            Err(io::Error::last_os_error())
+        } else {
+            Ok(KvmRun {
+                ptr: ptr.cast(),
+                len,
+            })
+        }
+    }
+}
+
+impl ops::Drop for KvmRun {
+    /// Munmap the mmaped `struct kvm_run`.
+    fn drop(&mut self) {
+        unsafe { libc::munmap(self.ptr.cast(), self.len) };
+    }
+}
+
+impl AsRef<kvm_sys::kvm_run> for KvmRun {
+    fn as_ref(&self) -> &kvm_sys::kvm_run {
+        unsafe { & *(self.ptr as *const kvm_sys::kvm_run) }
+    }
+}
+
+impl AsMut<kvm_sys::kvm_run> for KvmRun {
+    fn as_mut(&mut self) -> &mut kvm_sys::kvm_run {
+        unsafe { &mut *(self.ptr as *mut kvm_sys::kvm_run) }
+    }
+}
+
+
+ \ No newline at end of file diff --git a/src/kvm_rs/vcpu.rs.html b/src/kvm_rs/vcpu.rs.html new file mode 100644 index 0000000..df4a7bc --- /dev/null +++ b/src/kvm_rs/vcpu.rs.html @@ -0,0 +1,279 @@ +vcpu.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
+
+//! VCPU system ioctls.
+
+use std::fs;
+use std::io;
+
+use crate::{ioctl, kvm_sys, KvmRun};
+
+/// Exit reasons for the [`Vcpu::kvm_run`][crate::vcpu::Vcpu::kvm_run] function.
+///
+/// Details for the different exit reasons can be found in the [`kvm_run`
+/// structure][kvm-run-struct] description.
+///
+/// [kvm-run]: https://www.kernel.org/doc/html/latest/virt/kvm/api.html#kvm-run
+/// [kvm-run-struct]: https://www.kernel.org/doc/html/latest/virt/kvm/api.html#the-kvm-run-structure
+pub enum KvmExit<'cpu> {
+    Halt,
+    IoIn(u16, &'cpu mut [u8]),
+    IoOut(u16, &'cpu [u8]),
+    MmioRead(u64, &'cpu mut [u8]),
+    MmioWrite(u64, &'cpu [u8]),
+}
+
+/// Wrapper for VCPU ioctls.
+///
+/// Representation of the file descriptor obtained by the [`KVM_CREATE_VCPU`][kvm-create-vcpu] ioctl.
+/// This wrapper provides access to the `VCPU ioctls` as described in [KVM API][kvm].
+///
+/// [kvm]: https://www.kernel.org/doc/html/latest/virt/kvm/api.html#general-description
+/// [kvm-create-vcpu]: https://www.kernel.org/doc/html/latest/virt/kvm/api.html#kvm-create-vcpu
+pub struct Vcpu {
+    vcpu: fs::File,
+    kvm_run: KvmRun,
+}
+
+impl Vcpu {
+    pub(crate) fn new(vcpu: fs::File, kvm_run: KvmRun) -> Vcpu {
+        Vcpu { vcpu, kvm_run }
+    }
+
+    /// Get the general purpose registers with the [`KVM_GET_REGS`][kvm-get-regs] ioctl in form of
+    /// [`kvm_regs`](crate::kvm_sys::kvm_regs).
+    ///
+    /// [kvm-get-regs]: https://www.kernel.org/doc/html/latest/virt/kvm/api.html#kvm-get-regs
+    pub fn get_regs(&self) -> io::Result<kvm_sys::kvm_regs> {
+        let mut regs = kvm_sys::kvm_regs::default();
+        ioctl(
+            &self.vcpu,
+            kvm_sys::KVM_GET_REGS,
+            &mut regs as *mut _ as u64,
+        )?;
+        Ok(regs)
+    }
+
+    /// Set the general purpose registers with the [`KVM_SET_REGS`][kvm-set-regs] ioctl in form of
+    /// [`kvm_regs`](crate::kvm_sys::kvm_regs).
+    ///
+    /// [kvm-set-regs]: https://www.kernel.org/doc/html/latest/virt/kvm/api.html#kvm-set-regs
+    pub fn set_regs(&self, regs: kvm_sys::kvm_regs) -> io::Result<()> {
+        ioctl(&self.vcpu, kvm_sys::KVM_SET_REGS, &regs as *const _ as u64).map(|_| ())
+    }
+
+    /// Get the special registers with the [`KVM_GET_SREGS`][kvm-get-sregs] ioctl in form of
+    /// [`kvm_sregs`](crate::kvm_sys::kvm_sregs).
+    ///
+    /// [kvm-get-sregs]: https://www.kernel.org/doc/html/latest/virt/kvm/api.html#kvm-get-sregs
+    pub fn get_sregs(&self) -> io::Result<kvm_sys::kvm_sregs> {
+        let mut sregs = kvm_sys::kvm_sregs::default();
+        ioctl(
+            &self.vcpu,
+            kvm_sys::KVM_GET_SREGS,
+            &mut sregs as *mut _ as u64,
+        )?;
+        Ok(sregs)
+    }
+
+    /// Set the special registers with the [`KVM_SET_SREGS`][kvm-set-sregs] ioctl in form of
+    /// [`kvm_sregs`](crate::kvm_sys::kvm_sregs).
+    ///
+    /// [kvm-set-sregs]: https://www.kernel.org/doc/html/latest/virt/kvm/api.html#kvm-set-sregs
+    pub fn set_sregs(&self, sregs: kvm_sys::kvm_sregs) -> io::Result<()> {
+        ioctl(
+            &self.vcpu,
+            kvm_sys::KVM_SET_SREGS,
+            &sregs as *const _ as u64,
+        )
+        .map(|_| ())
+    }
+
+    /// Run the guest VCPU with the [`KVM_RUN`][kvm-run] ioctl until it exits with one of the exit
+    /// reasons described in [`KvmExit`](crate::vcpu::KvmExit).
+    ///
+    /// [kvm-run]: https://www.kernel.org/doc/html/latest/virt/kvm/api.html#kvm-run
+    pub fn run(&mut self) -> io::Result<KvmExit<'_>> {
+        ioctl(&self.vcpu, kvm_sys::KVM_RUN, 0)?;
+
+        let kvm_run = self.kvm_run.as_mut();
+
+        match kvm_run.exit_reason as u64 {
+            kvm_sys::KVM_EXIT_HLT => Ok(KvmExit::Halt),
+            kvm_sys::KVM_EXIT_IO => {
+                // Safe to use union `io` field, as Kernel instructed us to.
+                let io = unsafe { kvm_run.inner.io };
+
+                let kvm_run_ptr = kvm_run as *mut kvm_sys::kvm_run as *mut u8;
+
+                // Create IO buffer located at `kvm_run + io.offset`.
+                let data = unsafe {
+                    std::slice::from_raw_parts_mut(
+                        kvm_run_ptr.offset(io.data_offset as isize),
+                        io.count /* num blocks */ as usize * io.size /* bytes per block */ as usize,
+                    )
+                };
+
+                match io.direction as u64 {
+                    kvm_sys::KVM_EXIT_IO_IN => Ok(KvmExit::IoIn(io.port, data)),
+                    kvm_sys::KVM_EXIT_IO_OUT => Ok(KvmExit::IoOut(io.port, data)),
+                    _ => unreachable!(),
+                }
+            }
+            kvm_sys::KVM_EXIT_MMIO => {
+                // Safe to use union `mmio` filed, as Kernel instructed us to.
+                let mmio = unsafe { &mut kvm_run.inner.mmio };
+                let len = mmio.len as usize;
+
+                match mmio.is_write {
+                    0 => Ok(KvmExit::MmioRead(mmio.phys_addr, &mut mmio.data[..len])),
+                    1 => Ok(KvmExit::MmioWrite(mmio.phys_addr, &mmio.data[..len])),
+                    _ => unreachable!(),
+                }
+            }
+            r @ _ => {
+                todo!("KVM_EXIT_... (exit_reason={}) not implemented!", r)
+            }
+        }
+    }
+}
+
+
+ \ No newline at end of file diff --git a/src/kvm_rs/vm.rs.html b/src/kvm_rs/vm.rs.html new file mode 100644 index 0000000..94f2c10 --- /dev/null +++ b/src/kvm_rs/vm.rs.html @@ -0,0 +1,145 @@ +vm.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
+
+//! VM system ioctls.
+
+use std::fs;
+use std::io;
+use std::os::unix::io::FromRawFd;
+
+use crate::vcpu::Vcpu;
+use crate::{ioctl, kvm_sys, KvmRun, PhysAddr, UserMem};
+
+/// Wrapper for VM ioctls.
+///
+/// Representation of the file descriptor obtained by the [`KVM_CREATE_VM`][kvm-create-vm] ioctl.
+/// This wrapper provides access to the `VM ioctls` as described in [KVM API][kvm].
+///
+/// [kvm]: https://www.kernel.org/doc/html/latest/virt/kvm/api.html#general-description
+/// [kvm-create-vm]: https://www.kernel.org/doc/html/latest/virt/kvm/api.html#kvm-create-vm
+pub struct Vm {
+    vm: fs::File,
+    vcpu_mmap_size: usize,
+}
+
+impl Vm {
+    pub(crate) fn new(vm: fs::File, vcpu_mmap_size: usize) -> Vm {
+        Vm { vm, vcpu_mmap_size }
+    }
+
+    /// Map memory from userspace into the VM as `guest physical` memory starting at address
+    /// `phys_addr`.
+    /// The underlying operation is the [`KVM_SET_USER_MEMORY_REGION`][kmv-set-user-memory-region]
+    /// ioctl.
+    ///
+    /// # Safety
+    ///
+    /// The `mem: &UserMem` argument passed to this function must at least live as long the `Vcpu`
+    /// instance.
+    ///
+    /// [kvm-set-user-memory-region]: https://www.kernel.org/doc/html/latest/virt/kvm/api.html#kvm-set-user-memory-region
+    pub unsafe fn set_user_memory_region(
+        &self,
+        phys_addr: PhysAddr,
+        mem: &UserMem,
+    ) -> io::Result<()> {
+        // Create guest physical memory mapping for `slot : 0` at guest `phys_addr`.
+        let mut kvm_mem = kvm_sys::kvm_userspace_memory_region::default();
+        kvm_mem.userspace_addr = mem.ptr as u64;
+        kvm_mem.memory_size = mem.len as u64;
+        kvm_mem.guest_phys_addr = phys_addr.0;
+
+        ioctl(
+            &self.vm,
+            kvm_sys::KVM_SET_USER_MEMORY_REGION,
+            &kvm_mem as *const _ as u64,
+        )
+        .map(|_| ())
+    }
+
+    /// Create a new virtual cpu with the [`KVM_CREATE_VCPU`][kvm-create-vcpu] ioctl.
+    /// Returns a wrapper [`vcpu::Vcpu`][crate::vcpu::Vcpu] representing the VCPU.
+    ///
+    /// [kvm-create-vcpu]: https://www.kernel.org/doc/html/latest/virt/kvm/api.html#kvm-create-vcpu
+    pub fn create_vpcu(&self, id: u64) -> io::Result<Vcpu> {
+        let vcpu = ioctl(&self.vm, kvm_sys::KVM_CREATE_VCPU, id)
+            .map(|fd| unsafe { fs::File::from_raw_fd(fd) })?;
+
+        let kvm_run = KvmRun::new(&vcpu, self.vcpu_mmap_size)?;
+
+        Ok(Vcpu::new(vcpu, kvm_run))
+    }
+}
+
+
+ \ No newline at end of file diff --git a/src/kvm_rs/x86_64.rs.html b/src/kvm_rs/x86_64.rs.html new file mode 100644 index 0000000..5671eba --- /dev/null +++ b/src/kvm_rs/x86_64.rs.html @@ -0,0 +1,315 @@ +x86_64.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
+
+//! `x86_64` flags and bitfields.
+
+/* Rflags Register */
+
+/// Carry flag.
+pub const RFLAGS_CF: u64 = 1 << 0;
+/// Parity flag.
+pub const RFLAGS_PF: u64 = 1 << 2;
+/// Adjust flag.
+pub const RFLAGS_AF: u64 = 1 << 4;
+/// Zero flag.
+pub const RFLAGS_ZF: u64 = 1 << 6;
+/// Sign flag.
+pub const RFLAGS_SF: u64 = 1 << 7;
+/// Sign flag.
+pub const RFLAGS_IF: u64 = 1 << 9;
+/// Direction flag.
+pub const RFLAGS_DF: u64 = 1 << 10;
+/// Overflow flag.
+pub const RFLAGS_OF: u64 = 1 << 11;
+/// I/O privilege level.
+pub const RFLAGS_IOPL: u64 = 0b11 << 12;
+/// Alignment check.
+pub const RFLAGS_AC: u64 = 1 << 18;
+
+pub const fn rflags_cf(r: u64) -> u64   { (r & RFLAGS_CF)   >> 0 }
+pub const fn rflags_pf(r: u64) -> u64   { (r & RFLAGS_PF)   >> 2 }
+pub const fn rflags_af(r: u64) -> u64   { (r & RFLAGS_AF)   >> 4 }
+pub const fn rflags_zf(r: u64) -> u64   { (r & RFLAGS_ZF)   >> 6 }
+pub const fn rflags_sf(r: u64) -> u64   { (r & RFLAGS_SF)   >> 7 }
+pub const fn rflags_if(r: u64) -> u64   { (r & RFLAGS_IF)   >> 9 }
+pub const fn rflags_df(r: u64) -> u64   { (r & RFLAGS_DF)   >> 10 }
+pub const fn rflags_of(r: u64) -> u64   { (r & RFLAGS_OF)   >> 11 }
+pub const fn rflags_iopl(r: u64) -> u64 { (r & RFLAGS_IOPL) >> 12 }
+pub const fn rflags_ac(r: u64) -> u64   { (r & RFLAGS_AC)   >> 18 }
+
+/* Segment Selector */
+
+/// Requested privilege level.
+///
+/// Privilege level of the segment selector, where `0` is the most privileged mode and `3` the
+/// least.
+pub const SEG_SELECTOR_RPL : u16 = 0b11 << 0;
+/// Table indicator.
+///
+/// | TI | Table |
+/// |----|-------|
+/// | 0  | GDT   |
+/// | 1  | LDT   |
+pub const SEG_SELECTOR_TI : u16 = 1 << 2;
+/// Table index.
+///
+/// Index into the `GDT` or `LDT` table to select the segment descriptor. `GDT.base + 8 * index`
+/// gives the address of the segment descriptor (times `8` because every segment descriptor is `8
+/// byte`).
+pub const SEG_SELECTOR_INDEX : u16 = 0x1fff << 3;
+
+pub const fn seg_selector_rpl(s : u16) -> u16   { (s & SEG_SELECTOR_RPL)   >> 0 }
+pub const fn seg_selector_ti(s : u16) -> u16    { (s & SEG_SELECTOR_TI)    >> 2 }
+pub const fn seg_selector_index(s : u16) -> u16 { (s & SEG_SELECTOR_INDEX) >> 3 }
+
+/* Control Register CR0 (operation mode & state of the processor) */
+
+/// Protection Enable.
+///
+/// Enables `protected mode` when set and `real-address mode` when cleared. This enables
+/// `segment-level protection` not paging.
+pub const CR0_PE: u64 = 1 << 0;
+/// Monitor Coprocessor.
+pub const CR0_MP: u64 = 1 << 1;
+/// Emulation.
+///
+/// When set indicates the process does not have a FPU. FPU instructions will generate an exception
+/// that software can emulate the instruction.
+pub const CR0_EM: u64 = 1 << 2;
+/// Task Switched.
+pub const CR0_TS: u64 = 1 << 3;
+/// Extension Type.
+pub const CR0_ET: u64 = 1 << 4;
+/// Numeric Error.
+pub const CR0_NE: u64 = 1 << 5;
+/// Write Protect.
+///
+/// When set supervisor-level procedures can't write to read-only pages.
+pub const CR0_WP: u64 = 1 << 16;
+/// Alignment Mask.
+///
+/// Enables alignment check for `CPL=3`, check is only done if the [AC
+/// bit](crate::x86_64::RFLAGS_AC) of the `rflags` register ist set.
+pub const CR0_AM: u64 = 1 << 18;
+/// Not Write-Torugh.
+pub const CR0_NW: u64 = 1 << 29;
+/// Cachine disable.
+pub const CR0_CD: u64 = 1 << 30;
+/// Paging.
+///
+/// Enables paging when set, requires [CR0_PE](crate::x86_64::CR0_PE) to be set as well.
+pub const CR0_PG: u64 = 1 << 31;
+
+/* Control Register CR3 (paging information)
+ *
+ * Holds the physical base address of the first paging structure. The 12 lower bytes of the base
+ * address are assumed to be 0 and hence the first paging structure must be aligned to a 4K
+ * boundary.
+ */
+
+/// Mask for physical base address of paging structure.
+pub const CR3_PAGE_BASE_MASK: u64 = 0xffff_ffff_ffff_0000;
+
+/// Page-level Write-Through.
+pub const CR3_PWT: u64 = 1 << 3;
+/// Page-level Cache Disable.
+pub const CR3_PCD: u64 = 1 << 4;
+
+/* Control Register CR4 (flags for arch extenstions processor capabilities) */
+
+/// Physical Address Extenstion.
+///
+/// When set enables paging to produce physicall addresses with more than 32 bits. Required before
+/// entering `long mode`.
+pub const CR4_PAE: u64 = 1 << 5;
+/// 57-bit Linear Addresses.
+///
+/// When set in `long mode` enables `5-level` paging to translate `57-bit` linear addresses. When
+/// cleared use `4-level` paging to translate `48-bit` linear addresses.
+pub const CR4_LA57: u64 = 1 << 5;
+
+/* Extended Feature Enable Register (EFER) */
+
+/// Extended Feature Enable Register MSR number.
+///
+/// MSR number used with the [`rdmsr`][msr] and [`wrmsr`][msr] instructions to read/write the
+/// `EFER` model specific register.
+///
+/// [msr]: https://johannst.github.io/notes/arch/x86_64.html#model-specific-register-msr
+pub const MSR_EFER: u64 = 0xc000_0080;
+
+/// Long Mode Enable.
+///
+/// When set enables long mode operations.
+pub const EFER_LME: u64 = 1 << 8;
+/// Long Mode Active (readonly).
+///
+/// When set indicates long mode is active.
+pub const EFER_LMA: u64 = 1 << 10;
+
+/* Paging */
+
+/// Page entry present.
+pub const PAGE_ENTRY_PRESENT : u64 = 1 << 0;
+/// Page region read/write.
+///
+/// If set, region reference by paging entry is writeable.
+pub const PAGE_RENTRY_RW : u64 = 1 << 1;
+
+
+ \ No newline at end of file diff --git a/storage.js b/storage.js new file mode 100644 index 0000000..7737953 --- /dev/null +++ b/storage.js @@ -0,0 +1 @@ +var resourcesSuffix="";var darkThemes=["dark","ayu"];var currentTheme=document.getElementById("themeStyle");var 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!==true){for(i=0;i=0;--i){if(func(arr[i])===true){return true}}}}return false}function onEachLazy(lazyArray,func,reversed){return onEach(Array.prototype.slice.call(lazyArray),func,reversed)}function hasOwnProperty(obj,property){return Object.prototype.hasOwnProperty.call(obj,property)}function updateLocalStorage(name,value){try{window.localStorage.setItem(name,value)}catch(e){}}function getCurrentValue(name){try{return window.localStorage.getItem(name)}catch(e){return null}}function switchTheme(styleElem,mainStyleElem,newTheme,saveTheme){var fullBasicCss="rustdoc"+resourcesSuffix+".css";var fullNewTheme=newTheme+resourcesSuffix+".css";var newHref=mainStyleElem.href.replace(fullBasicCss,fullNewTheme);if(saveTheme===true){updateLocalStorage("rustdoc-theme",newTheme)}if(styleElem.href===newHref){return}var found=false;if(savedHref.length===0){onEachLazy(document.getElementsByTagName("link"),function(el){savedHref.push(el.href)})}onEach(savedHref,function(el){if(el===newHref){found=true;return true}});if(found===true){styleElem.href=newHref}}function useSystemTheme(value){if(value===undefined){value=true}updateLocalStorage("rustdoc-use-system-theme",value);var toggle=document.getElementById("use-system-theme");if(toggle&&toggle instanceof HTMLInputElement){toggle.checked=value}}var updateSystemTheme=(function(){if(!window.matchMedia){return function(){var cssTheme=getComputedStyle(document.documentElement).getPropertyValue('content');switchTheme(currentTheme,mainTheme,JSON.parse(cssTheme)||"light",true)}}var mql=window.matchMedia("(prefers-color-scheme: dark)");function handlePreferenceChange(mql){if(getSettingValue("use-system-theme")!=="false"){var lightTheme=getSettingValue("preferred-light-theme")||"light";var darkTheme=getSettingValue("preferred-dark-theme")||"dark";if(mql.matches){switchTheme(currentTheme,mainTheme,darkTheme,true)}else{switchTheme(currentTheme,mainTheme,lightTheme,true)}}}mql.addListener(handlePreferenceChange);return function(){handlePreferenceChange(mql)}})();if(getSettingValue("use-system-theme")!=="false"&&window.matchMedia){if(getSettingValue("use-system-theme")===null&&getSettingValue("preferred-dark-theme")===null&&darkThemes.indexOf(localStoredTheme)>=0){updateLocalStorage("rustdoc-preferred-dark-theme",localStoredTheme)}updateSystemTheme()}else{switchTheme(currentTheme,mainTheme,getSettingValue("theme")||"light",false)} \ No newline at end of file diff --git a/theme.js b/theme.js new file mode 100644 index 0000000..8f9c49a --- /dev/null +++ b/theme.js @@ -0,0 +1 @@ +var themes=document.getElementById("theme-choices");var themePicker=document.getElementById("theme-picker");function showThemeButtonState(){themes.style.display="block";themePicker.style.borderBottomRightRadius="0";themePicker.style.borderBottomLeftRadius="0"}function hideThemeButtonState(){themes.style.display="none";themePicker.style.borderBottomRightRadius="3px";themePicker.style.borderBottomLeftRadius="3px"}function switchThemeButtonState(){if(themes.style.display==="block"){hideThemeButtonState()}else{showThemeButtonState()}};function handleThemeButtonsBlur(e){var active=document.activeElement;var related=e.relatedTarget;if(active.id!=="theme-picker"&&(!active.parentNode||active.parentNode.id!=="theme-choices")&&(!related||(related.id!=="theme-picker"&&(!related.parentNode||related.parentNode.id!=="theme-choices")))){hideThemeButtonState()}}themePicker.onclick=switchThemeButtonState;themePicker.onblur=handleThemeButtonsBlur;["ayu","dark","light"].forEach(function(item){var but=document.createElement("button");but.textContent=item;but.onclick=function(el){switchTheme(currentTheme,mainTheme,item,true);useSystemTheme(false)};but.onblur=handleThemeButtonsBlur;themes.appendChild(but)}) \ No newline at end of file diff --git a/wheel.svg b/wheel.svg new file mode 100644 index 0000000..01da3b2 --- /dev/null +++ b/wheel.svg @@ -0,0 +1 @@ + \ No newline at end of file -- cgit v1.2.3