Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
K
kernel
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
23
Issues
23
List
Boards
Labels
Service Desk
Milestones
Merge Requests
10
Merge Requests
10
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
redox-os
kernel
Commits
f3650661
Verified
Commit
f3650661
authored
Apr 06, 2019
by
Jeremy Soller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update funmap support
parent
4329aa43
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
111 additions
and
56 deletions
+111
-56
Cargo.lock
Cargo.lock
+47
-41
Cargo.toml
Cargo.toml
+1
-1
src/context/memory.rs
src/context/memory.rs
+6
-1
src/scheme/user.rs
src/scheme/user.rs
+20
-1
src/syscall/fs.rs
src/syscall/fs.rs
+37
-12
No files found.
Cargo.lock
View file @
f3650661
...
...
@@ -11,7 +11,7 @@ name = "ansi_term"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"winapi 0.3.
6
(registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.
7
(registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
...
...
@@ -21,7 +21,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "backtrace"
version = "0.3.1
4
"
version = "0.3.1
5
"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
...
...
@@ -29,7 +29,7 @@ dependencies = [
"cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.
6
(registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.
7
(registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
...
...
@@ -37,7 +37,7 @@ name = "backtrace-sys"
version = "0.1.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cc 1.0.3
2
(registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.3
4
(registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)",
]
...
...
@@ -63,14 +63,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
"semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.
89
(registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.
89
(registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.
90
(registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.
90
(registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "cc"
version = "1.0.3
2
"
version = "1.0.3
4
"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
...
...
@@ -85,7 +85,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
"clippy_lints 0.0.209 (registry+https://github.com/rust-lang/crates.io-index)",
"regex 1.1.
4
(registry+https://github.com/rust-lang/crates.io-index)",
"regex 1.1.
5
(registry+https://github.com/rust-lang/crates.io-index)",
"rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
"semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
...
...
@@ -104,8 +104,8 @@ dependencies = [
"quine-mc_cluskey 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
"regex-syntax 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
"semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.
89
(registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.
89
(registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.
90
(registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.
90
(registry+https://github.com/rust-lang/crates.io-index)",
"toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
"unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
...
...
@@ -113,7 +113,7 @@ dependencies = [
[[package]]
name = "either"
version = "1.5.
1
"
version = "1.5.
2
"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
...
...
@@ -121,7 +121,7 @@ name = "error-chain"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"backtrace 0.3.1
4
(registry+https://github.com/rust-lang/crates.io-index)",
"backtrace 0.3.1
5
(registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
...
...
@@ -161,7 +161,7 @@ name = "itertools"
version = "0.7.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"either 1.5.
1
(registry+https://github.com/rust-lang/crates.io-index)",
"either 1.5.
2
(registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
...
...
@@ -171,14 +171,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "kernel"
version = "0.1.5
2
"
version = "0.1.5
3
"
dependencies = [
"bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
"clippy 0.0.209 (registry+https://github.com/rust-lang/crates.io-index)",
"goblin 0.0.15 (registry+https://github.com/rust-lang/crates.io-index)",
"linked_list_allocator 0.6.
3
(registry+https://github.com/rust-lang/crates.io-index)",
"linked_list_allocator 0.6.
4
(registry+https://github.com/rust-lang/crates.io-index)",
"raw-cpuid 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"redox_syscall 0.1.5
2
",
"redox_syscall 0.1.5
3
",
"rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
"slab_allocator 0.3.1",
"spin 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
...
...
@@ -197,10 +197,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "linked_list_allocator"
version = "0.6.
3
"
version = "0.6.
4
"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"spin 0.
4.1
0 (registry+https://github.com/rust-lang/crates.io-index)",
"spin 0.
5.
0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
...
...
@@ -267,19 +267,19 @@ version = "4.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.3
2
(registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.3
4
(registry+https://github.com/rust-lang/crates.io-index)",
"rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.
89
(registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.
89
(registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.
90
(registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.
90
(registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "redox_syscall"
version = "0.1.5
2
"
version = "0.1.5
3
"
[[package]]
name = "regex"
version = "1.1.
4
"
version = "1.1.
5
"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
...
...
@@ -329,7 +329,7 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.
89
(registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.
90
(registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
...
...
@@ -339,17 +339,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "serde"
version = "1.0.
89
"
version = "1.0.
90
"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "serde_derive"
version = "1.0.
89
"
version = "1.0.
90
"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",
"syn 0.15.
29
(registry+https://github.com/rust-lang/crates.io-index)",
"syn 0.15.
30
(registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
...
...
@@ -359,14 +359,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
"ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.
89
(registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.
90
(registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "slab_allocator"
version = "0.3.1"
dependencies = [
"linked_list_allocator 0.6.
3
(registry+https://github.com/rust-lang/crates.io-index)",
"linked_list_allocator 0.6.
4
(registry+https://github.com/rust-lang/crates.io-index)",
"spin 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
...
...
@@ -380,9 +380,14 @@ name = "spin"
version = "0.4.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "spin"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "syn"
version = "0.15.
29
"
version = "0.15.
30
"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)",
...
...
@@ -403,7 +408,7 @@ name = "toml"
version = "0.4.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"serde 1.0.
89
(registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.
90
(registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
...
...
@@ -454,7 +459,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "winapi"
version = "0.3.
6
"
version = "0.3.
7
"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
...
...
@@ -484,17 +489,17 @@ dependencies = [
"checksum aho-corasick 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e6f484ae0c99fec2e858eb6134949117399f222608d84cadb3f58c1f97c2364c"
"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
"checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799"
"checksum backtrace 0.3.1
4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd5a90e2b463010cd0e0ce9a11d4a9d5d58d9f41d4a6ba3dcaf9e68b466e88b4
"
"checksum backtrace 0.3.1
5 (registry+https://github.com/rust-lang/crates.io-index)" = "f106c02a3604afcdc0df5d36cc47b44b55917dbaf3d808f71c163a0ddba64637
"
"checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6"
"checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d"
"checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5"
"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12"
"checksum cargo_metadata 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1efca0b863ca03ed4c109fb1c55e0bc4bbeb221d3e103d86251046b06a526bd0"
"checksum cc 1.0.3
2 (registry+https://github.com/rust-lang/crates.io-index)" = "ad0daef304fa0b4238f5f7ed7178774b43b06f6a9b6509f6642bef4ff1f7b9b2
"
"checksum cc 1.0.3
4 (registry+https://github.com/rust-lang/crates.io-index)" = "30f813bf45048a18eda9190fd3c6b78644146056740c43172a5a3699118588fd
"
"checksum cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "11d43355396e872eefb45ce6342e4374ed7bc2b3a502d1b28e36d6e23c05d1f4"
"checksum clippy 0.0.209 (registry+https://github.com/rust-lang/crates.io-index)" = "fe56cba96f8d67cd3af996bd2c61fbfea263cc555db9180dc1f7413418454c7d"
"checksum clippy_lints 0.0.209 (registry+https://github.com/rust-lang/crates.io-index)" = "891679ac4d0890425ce9aa4db6ab7c05a60506048fb5e0fc2ae2eeaeb02626e8"
"checksum either 1.5.
1 (registry+https://github.com/rust-lang/crates.io-index)" = "c67353c641dc847124ea1902d69bd753dee9bb3beff9aa3662ecf86c971d1fac
"
"checksum either 1.5.
2 (registry+https://github.com/rust-lang/crates.io-index)" = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b
"
"checksum error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ff511d5dc435d703f4971bc399647c9bc38e20cb41452e3b9feb4765419ed3f3"
"checksum getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "0a7292d30132fb5424b354f5dc02512a86e4c516fe544bb7a25e7f266951b797"
"checksum goblin 0.0.15 (registry+https://github.com/rust-lang/crates.io-index)" = "5e3ba9fec4dc9a09553388bff2724d3bf06bd64013539f2d3e1e3838eefb310a"
...
...
@@ -504,7 +509,7 @@ dependencies = [
"checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b"
"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14"
"checksum libc 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)" = "bedcc7a809076656486ffe045abeeac163da1b558e963a31e29fbfbeba916917"
"checksum linked_list_allocator 0.6.
3 (registry+https://github.com/rust-lang/crates.io-index)" = "655d57c71827fe0891ce72231b6aa5e14033dae3f604609e6a6f807267c1678d
"
"checksum linked_list_allocator 0.6.
4 (registry+https://github.com/rust-lang/crates.io-index)" = "47314ec1d29aa869ee7cb5a5be57be9b1055c56567d59c3fb6689926743e0bea
"
"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
"checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39"
"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831"
...
...
@@ -515,7 +520,7 @@ dependencies = [
"checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1"
"checksum raw-cpuid 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "13b844e4049605ff38fed943f5c7b2c691fad68d9d5bf074d2720554c4e48246"
"checksum raw-cpuid 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "90e0d3209fac374e168cef2d8806dde7b31ef0ee82a965bcc0bec562c078a6f5"
"checksum regex 1.1.
4 (registry+https://github.com/rust-lang/crates.io-index)" = "2cf47563eeec4ae0b6f5b0e0306024ccef91e779342705bbaa4b6ffc75ad825d
"
"checksum regex 1.1.
5 (registry+https://github.com/rust-lang/crates.io-index)" = "559008764a17de49a3146b234641644ed37d118d1ef641a0bb573d146edc6ce0
"
"checksum regex-syntax 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "dcfd8681eebe297b81d98498869d4aae052137651ad7b96822f09ceb690d0a96"
"checksum rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619"
"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
...
...
@@ -523,12 +528,13 @@ dependencies = [
"checksum scroll 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2f84d114ef17fd144153d608fba7c446b0145d038985e7a8cc5d08bb0ce20383"
"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
"checksum serde 1.0.
89 (registry+https://github.com/rust-lang/crates.io-index)" = "92514fb95f900c9b5126e32d020f5c6d40564c27a5ea6d1d7d9f157a96623560
"
"checksum serde_derive 1.0.
89 (registry+https://github.com/rust-lang/crates.io-index)" = "bb6eabf4b5914e88e24eea240bb7c9f9a2cbc1bbbe8d961d381975ec3c6b806c
"
"checksum serde 1.0.
90 (registry+https://github.com/rust-lang/crates.io-index)" = "aa5f7c20820475babd2c077c3ab5f8c77a31c15e16ea38687b4c02d3e48680f4
"
"checksum serde_derive 1.0.
90 (registry+https://github.com/rust-lang/crates.io-index)" = "58fc82bec244f168b23d1963b45c8bf5726e9a15a9d146a067f9081aeed2de79
"
"checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d"
"checksum smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c4488ae950c49d403731982257768f48fada354a5203fe81f9bb6f43ca9002be"
"checksum spin 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ceac490aa12c567115b40b7b7fceca03a6c9d53d5defea066123debc83c5dc1f"
"checksum syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)" = "1825685f977249735d510a242a6727b46efe914bb67e38d30c071b1b72b1d5c2"
"checksum spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44363f6f51401c34e7be73db0db371c04705d35efbe9f7d6082e03a921a32c55"
"checksum syn 0.15.30 (registry+https://github.com/rust-lang/crates.io-index)" = "66c8865bf5a7cbb662d8b011950060b3c8743dca141b054bf7195b20d314d8e2"
"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b"
"checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f"
"checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86"
...
...
@@ -538,7 +544,7 @@ dependencies = [
"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a"
"checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737"
"checksum winapi 0.3.
6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b
0"
"checksum winapi 0.3.
7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf77
0"
"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
"checksum x86 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "178718d3f2c7dd98d44f8e353b0ccc8c89b2e81e31e5eed93e7fdf5f36db7a13"
Cargo.toml
View file @
f3650661
[package]
name
=
"kernel"
version
=
"0.1.5
2
"
version
=
"0.1.5
3
"
build
=
"build.rs"
[lib]
...
...
src/context/memory.rs
View file @
f3650661
...
...
@@ -19,7 +19,7 @@ pub struct Grant {
flags
:
EntryFlags
,
mapped
:
bool
,
//TODO: This is probably a very heavy way to keep track of fmap'd files, perhaps move to the context?
desc_opt
:
Option
<
FileDescriptor
>
,
pub
desc_opt
:
Option
<
FileDescriptor
>
,
}
impl
Grant
{
...
...
@@ -133,6 +133,11 @@ impl Grant {
flush_all
.flush
(
&
mut
active_table
);
if
let
Some
(
desc
)
=
self
.desc_opt
.take
()
{
//TODO: This imposes a large cost on unmapping, but that cost cannot be avoided without modifying fmap and funmap
let
_
=
desc
.close
();
}
self
.mapped
=
false
;
}
...
...
src/scheme/user.rs
View file @
f3650661
...
...
@@ -30,6 +30,7 @@ pub struct UserInner {
context
:
Weak
<
RwLock
<
Context
>>
,
todo
:
WaitQueue
<
Packet
>
,
fmap
:
Mutex
<
BTreeMap
<
u64
,
(
Weak
<
RwLock
<
Context
>>
,
FileDescriptor
,
Map
)
>>
,
funmap
:
Mutex
<
BTreeMap
<
usize
,
usize
>>
,
done
:
WaitMap
<
u64
,
usize
>
}
...
...
@@ -45,6 +46,7 @@ impl UserInner {
context
:
context
,
todo
:
WaitQueue
::
new
(),
fmap
:
Mutex
::
new
(
BTreeMap
::
new
()),
funmap
:
Mutex
::
new
(
BTreeMap
::
new
()),
done
:
WaitMap
::
new
()
}
}
...
...
@@ -192,7 +194,11 @@ impl UserInner {
if
let
Some
((
context_weak
,
desc
,
map
))
=
self
.fmap
.lock
()
.remove
(
&
packet
.id
)
{
if
let
Ok
(
address
)
=
Error
::
demux
(
packet
.a
)
{
//TODO: Protect against sharing addresses that are not page aligned
packet
.a
=
Error
::
mux
(
UserInner
::
capture_inner
(
&
context_weak
,
address
,
map
.size
,
map
.flags
,
Some
(
desc
)));
let
res
=
UserInner
::
capture_inner
(
&
context_weak
,
address
,
map
.size
,
map
.flags
,
Some
(
desc
));
if
let
Ok
(
new_address
)
=
res
{
self
.funmap
.lock
()
.insert
(
new_address
,
address
);
}
packet
.a
=
Error
::
mux
(
res
);
}
else
{
let
_
=
desc
.close
();
}
...
...
@@ -358,6 +364,19 @@ impl Scheme for UserScheme {
result
}
fn
funmap
(
&
self
,
new_address
:
usize
)
->
Result
<
usize
>
{
let
inner
=
self
.inner
.upgrade
()
.ok_or
(
Error
::
new
(
ENODEV
))
?
;
let
address_opt
=
{
let
mut
funmap
=
inner
.funmap
.lock
();
funmap
.remove
(
&
new_address
)
};
if
let
Some
(
address
)
=
address_opt
{
inner
.call
(
SYS_FUNMAP
,
address
,
0
,
0
)
}
else
{
Err
(
Error
::
new
(
EINVAL
))
}
}
fn
fpath
(
&
self
,
file
:
usize
,
buf
:
&
mut
[
u8
])
->
Result
<
usize
>
{
let
inner
=
self
.inner
.upgrade
()
.ok_or
(
Error
::
new
(
ENODEV
))
?
;
let
address
=
inner
.capture_mut
(
buf
)
?
;
...
...
src/syscall/fs.rs
View file @
f3650661
...
...
@@ -413,22 +413,47 @@ pub fn funmap(virtual_address: usize) -> Result<usize> {
if
virtual_address
==
0
{
Ok
(
0
)
}
else
{
let
contexts
=
context
::
contexts
();
let
context_lock
=
contexts
.current
()
.ok_or
(
Error
::
new
(
ESRCH
))
?
;
let
context
=
context_lock
.read
();
let
mut
desc_opt
=
None
;
let
mut
grants
=
context
.grants
.lock
();
for
i
in
0
..
grants
.len
()
{
let
start
=
grants
[
i
]
.start_address
()
.get
();
let
end
=
start
+
grants
[
i
]
.size
();
if
virtual_address
>=
start
&&
virtual_address
<
end
{
grants
.remove
(
i
)
.unmap
();
{
let
contexts
=
context
::
contexts
();
let
context_lock
=
contexts
.current
()
.ok_or
(
Error
::
new
(
ESRCH
))
?
;
let
context
=
context_lock
.read
();
return
Ok
(
0
);
let
mut
grants
=
context
.grants
.lock
();
for
i
in
0
..
grants
.len
()
{
let
start
=
grants
[
i
]
.start_address
()
.get
();
let
end
=
start
+
grants
[
i
]
.size
();
if
virtual_address
>=
start
&&
virtual_address
<
end
{
let
mut
grant
=
grants
.remove
(
i
);
if
grant
.desc_opt
.is_some
()
{
desc_opt
=
grant
.desc_opt
.take
();
grant
.unmap
();
break
;
}
}
}
}
Err
(
Error
::
new
(
EFAULT
))
if
let
Some
(
desc
)
=
desc_opt
{
let
scheme_id
=
{
let
description
=
desc
.description
.read
();
description
.scheme
};
let
scheme
=
{
let
schemes
=
scheme
::
schemes
();
let
scheme
=
schemes
.get
(
scheme_id
)
.ok_or
(
Error
::
new
(
EBADF
))
?
;
scheme
.clone
()
};
let
res
=
scheme
.funmap
(
virtual_address
);
let
_
=
desc
.close
();
res
}
else
{
Err
(
Error
::
new
(
EFAULT
))
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment