sc-0.2.7/.cargo_vcs_info.json0000644000000001360000000000100114470ustar { "git": { "sha1": "053dc07c4e9f1399c548ee294253015c7c9682bd" }, "path_in_vcs": "" }sc-0.2.7/.github/workflows/ci.yml000064400000000000000000000037700072674642500150110ustar 00000000000000on: push: branches: [master] pull_request: branches: [master] name: Continuous integration jobs: test : name: Test Suite strategy: matrix: target: # Linux - x86_64-unknown-linux-gnu - aarch64-unknown-linux-gnu - armv7-unknown-linux-gnueabihf - i686-unknown-linux-gnu - mips-unknown-linux-gnu - mips64-unknown-linux-gnuabi64 - mips64el-unknown-linux-gnuabi64 - mipsel-unknown-linux-gnu - powerpc-unknown-linux-gnu - powerpc64-unknown-linux-gnu - powerpc64le-unknown-linux-gnu - riscv64gc-unknown-linux-gnu # *BSD - x86_64-unknown-freebsd os: - ubuntu-latest include: # macOS - target: x86_64-apple-darwin os: macOS-latest runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal # asm! is stable and llvm_asm! still exists toolchain: nightly-2022-01-14 target: ${{ matrix.target }} override: true # omit tests on BSD - uses: actions-rs/cargo@v1 if: matrix.target == 'x86_64-unknown-freebsd' with: use-cross: true command: check args: --target ${{ matrix.target }} - uses: actions-rs/cargo@v1 if: matrix.target != 'x86_64-unknown-freebsd' with: use-cross: true command: test args: --target ${{ matrix.target }} - uses: actions-rs/cargo@v1 if: matrix.target != 'x86_64-unknown-freebsd' with: use-cross: true command: run args: --target ${{ matrix.target }} --release --example hello - uses: actions-rs/cargo@v1 if: matrix.target != 'x86_64-unknown-freebsd' with: use-cross: true command: test args: --target ${{ matrix.target }} --release sc-0.2.7/.gitignore000064400000000000000000000000240072674642500122530ustar 00000000000000/target /Cargo.lock sc-0.2.7/CHANGELOG.md000064400000000000000000000060350072674642500121040ustar 00000000000000# Change Log All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] ## [v0.2.7] - 2022-03-24 ### Added - Added support for Aarch64 macOS (M1) ## [v0.2.6] - 2022-02-04 ### Changed - architectures aarch64, riscv64 and x86_64 now use the stable `asm!` macro. this crate will work on stable Rust 1.59+ when compiled to those architectures ## [v0.2.5] - 2021-08-14 ### Added - Added support for Android ## [v0.2.4] - 2021-05-15 ### Added - 64-bit RISC-V support - Linux 5.12 system calls ### Fixed - cross-compilation to 32-bit ARM ## [v0.2.3] - 2020-07-28 ### Changed - switch from `asm!` to `llvm_asm!` ## [v0.2.2] - 2017-11-06 ### Added - The missing STATX system call. ## [v0.2.1] - 2017-05-06 ### Added - Some ARM specific syscals. ## [v0.2.0] - 2017-02-27 ### Added - More syscalls. Syscalls are now generated from the latest Linux version (4.10 at the time of writing this) source code. ### Changed - [breaking-change]. Some syscalls have been renamed to match the Linux source code. - ARM - SYNC_FILE_RANGE2 -> ARM_SYNC_FILE_RANGE - SPARC64 - GETRESGID -> GETRESGID32 - GETRESUID -> GETRESUID32 - SETRESGID -> SETRESGID32 - SETRESUID -> SETRESUID32 ### Fixed - x86 syscall6. It was hitting rust-lang/rust#39098 ## [v0.1.5] - 2017-02-03 ### Fixed - The syscall number for GETRANDOM on x86 ## [v0.1.4] - 2017-02-02 ### Added - GETRANDOM and NEWFSTATAT syscalls ## [v0.1.3] - 2017-01-21 ### Fixed - Error when using MIPS' syscall5/syscall6 with optimizations enabled ## [v0.1.2] - 2017-01-21 ### Added - syscall5 and syscall6 for mips ## [v0.1.1] - 2017-01-14 ### Fixed - syscall2 for linux-aarch64. There was a type in the register constraints. ## v0.1.0 - 2017-01-13 Initial release. Forked from [syscall] v0.2.1. [syscall]: https://crates.io/crates/syscall - Support for ARM, Aarch64, MIPS, MIPS64, PowerPC, PowerPC64, SPARC64, x86 and x86_64 Linux - Support for x86_64 macOS - Support for x86_64 FreeBSD [Unreleased]: https://github.com/japaric/syscall.rs/compare/v0.2.7...HEAD [v0.2.7]: https://github.com/japaric/syscall.rs/compare/v0.2.6...v0.2.7 [v0.2.6]: https://github.com/japaric/syscall.rs/compare/v0.2.5...v0.2.6 [v0.2.5]: https://github.com/japaric/syscall.rs/compare/v0.2.4...v0.2.5 [v0.2.4]: https://github.com/japaric/syscall.rs/compare/v0.2.3...v0.2.4 [v0.2.3]: https://github.com/japaric/syscall.rs/compare/v0.2.2...v0.2.3 [v0.2.2]: https://github.com/japaric/syscall.rs/compare/v0.2.1...v0.2.2 [v0.2.1]: https://github.com/japaric/syscall.rs/compare/v0.2.0...v0.2.1 [v0.2.0]: https://github.com/japaric/syscall.rs/compare/v0.1.5...v0.2.0 [v0.1.5]: https://github.com/japaric/syscall.rs/compare/v0.1.4...v0.1.5 [v0.1.4]: https://github.com/japaric/syscall.rs/compare/v0.1.3...v0.1.4 [v0.1.3]: https://github.com/japaric/syscall.rs/compare/v0.1.2...v0.1.3 [v0.1.2]: https://github.com/japaric/syscall.rs/compare/v0.1.1...v0.1.2 [v0.1.1]: https://github.com/japaric/syscall.rs/compare/v0.1.0...v0.1.1 sc-0.2.7/COPYRIGHT000064400000000000000000000006510072674642500115640ustar 00000000000000This project is copyright 2015, The syscall.rs Project Developers (given by the Git revision history). Licensed under the Apache License, Version 2.0 or the MIT license , at your option. All files in the project carrying such notice may not be copied, modified, or distributed except according to those terms. sc-0.2.7/Cargo.lock0000644000000002220000000000100074160ustar # This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "sc" version = "0.2.7" sc-0.2.7/Cargo.toml0000644000000014210000000000100074430ustar # THIS FILE IS AUTOMATICALLY GENERATED BY CARGO # # When uploading crates to the registry Cargo will automatically # "normalize" Cargo.toml files for maximal compatibility # with all versions of Cargo and also rewrite `path` dependencies # to registry (e.g., crates.io) dependencies. # # If you are reading this file be aware that the original Cargo.toml # will likely look very different (and much more reasonable). # See Cargo.toml.orig for the original contents. [package] name = "sc" version = "0.2.7" authors = ["The syscall.rs Project Developers"] description = "Raw system calls" documentation = "https://docs.rs/sc" readme = "README.md" keywords = [ "syscall", "system", "call", ] license = "MIT OR Apache-2.0" repository = "https://github.com/japaric/syscall.rs" sc-0.2.7/Cargo.toml.orig0000644000000004610000000000100104050ustar [package] authors = [ "The syscall.rs Project Developers" ] description = "Raw system calls" documentation = "https://docs.rs/sc" keywords = ["syscall", "system", "call"] license = "MIT OR Apache-2.0" name = "sc" readme = "README.md" repository = "https://github.com/japaric/syscall.rs" version = "0.2.7" sc-0.2.7/Cargo.toml.orig000064400000000000000000000004610072674642500131570ustar 00000000000000[package] authors = [ "The syscall.rs Project Developers" ] description = "Raw system calls" documentation = "https://docs.rs/sc" keywords = ["syscall", "system", "call"] license = "MIT OR Apache-2.0" name = "sc" readme = "README.md" repository = "https://github.com/japaric/syscall.rs" version = "0.2.7" sc-0.2.7/Cross.toml000064400000000000000000000001440072674642500122540ustar 00000000000000[target.powerpc64-unknown-linux-gnu] image = 'rustembedded/cross:powerpc64-unknown-linux-gnu-0.2.0' sc-0.2.7/LICENSE-APACHE000064400000000000000000000251370072674642500122230ustar 00000000000000 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. sc-0.2.7/LICENSE-MIT000064400000000000000000000020650072674642500117260ustar 00000000000000Copyright (c) 2014 The syscall.rs Project Developers 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. sc-0.2.7/README.md000064400000000000000000000012620072674642500115470ustar 00000000000000# Raw system calls for Rust This library allows Rust code to invoke system calls directly. ⚠️ NOTE: Only these architectures have been ported to the stable (as of 1.59) `asm!` macro - aarch64 - riscv64 - x86_64 All the other architectures use the deprecated `llvm_asm!` macro which has already been removed. To use this crate with those architectures you'll need to use an older nightly like `nightly-2022-01-14` See the [list of supported platforms](https://github.com/japaric/syscall.rs/tree/master/src/platform). Additions are very welcome! We do not intend to provide wrapper functions like `read(2)` etc. because there are many subtly different ways to define them in Rust. sc-0.2.7/examples/hello.rs000064400000000000000000000011670072674642500135630ustar 00000000000000// Copyright 2014 The syscall.rs Project Developers. See the // COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. #[macro_use] extern crate sc; fn write(fd: usize, buf: &[u8]) { unsafe { syscall!(WRITE, fd, buf.as_ptr(), buf.len()); } } fn main() { write(1, "Hello, world!\n".as_bytes()); } sc-0.2.7/src/lib.rs000064400000000000000000000061440072674642500121770ustar 00000000000000// Copyright 2014 The syscall.rs Project Developers. See the // COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. //! Raw system calls for Rust. //! //! NOTE: Only these architectures have been ported to the stable (as of 1.59) `asm!` macro //! //! - aarch64 //! - riscv64 //! - x86_64 //! //! All the other architectures use the deprecated `llvm_asm!` macro which has already been removed. //! To use this crate with those architectures you'll need to use an older nightly like //! `nightly-2022-01-14` // Reference http://man7.org/linux/man-pages/man2/syscall.2.html #![allow(deprecated)] // llvm_asm! #![deny(warnings)] #![no_std] #![cfg_attr(any( target_arch = "arm", target_arch = "mips", target_arch = "mips64", target_arch = "powerpc", target_arch = "powerpc64", target_arch = "sparc64", target_arch = "x86" ), feature(llvm_asm))] #[cfg(test)] extern crate std; pub use platform::*; pub mod macros; #[cfg(all(any(target_os = "linux", target_os = "android"), target_arch = "aarch64"))] #[path="platform/linux-aarch64/mod.rs"] pub mod platform; #[cfg(all(any(target_os = "linux", target_os = "android"), target_arch = "arm"))] #[path="platform/linux-armeabi/mod.rs"] pub mod platform; #[cfg(all(any(target_os = "linux", target_os = "android"), target_arch = "mips"))] #[path="platform/linux-mips/mod.rs"] pub mod platform; #[cfg(all(any(target_os = "linux", target_os = "android"), target_arch = "mips64"))] #[path="platform/linux-mips64/mod.rs"] pub mod platform; #[cfg(all(any(target_os = "linux", target_os = "android"), target_arch = "powerpc"))] #[path="platform/linux-powerpc/mod.rs"] pub mod platform; #[cfg(all(any(target_os = "linux", target_os = "android"), target_arch = "powerpc64"))] #[path="platform/linux-powerpc64/mod.rs"] pub mod platform; #[cfg(all(any(target_os = "linux", target_os = "android"), target_arch = "riscv64"))] #[path="platform/linux-riscv64/mod.rs"] pub mod platform; #[cfg(all(any(target_os = "linux", target_os = "android"), target_arch = "sparc64"))] #[path="platform/linux-sparc64/mod.rs"] pub mod platform; #[cfg(all(any(target_os = "linux", target_os = "android"), target_arch = "x86"))] #[path="platform/linux-x86/mod.rs"] pub mod platform; #[cfg(all(any(target_os = "linux", target_os = "android"), target_arch = "x86_64"))] #[path="platform/linux-x86_64/mod.rs"] pub mod platform; #[cfg(all(target_os = "freebsd", target_arch = "x86_64"))] #[path="platform/freebsd-x86_64/mod.rs"] pub mod platform; #[cfg(all(target_os = "macos", target_arch = "x86_64"))] #[path="platform/macos-x86_64/mod.rs"] pub mod platform; #[cfg(all(target_os = "macos", target_arch = "aarch64"))] #[path="platform/macos-aarch64/mod.rs"] pub mod platform; sc-0.2.7/src/macros.rs000064400000000000000000000037330072674642500127160ustar 00000000000000// Copyright 2014 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. #[macro_export] macro_rules! syscall { ($nr:ident) => ( ::sc::syscall0( ::sc::nr::$nr) ); ($nr:ident, $a1:expr) => ( ::sc::syscall1( ::sc::nr::$nr, $a1 as usize) ); ($nr:ident, $a1:expr, $a2:expr) => ( ::sc::syscall2( ::sc::nr::$nr, $a1 as usize, $a2 as usize) ); ($nr:ident, $a1:expr, $a2:expr, $a3:expr) => ( ::sc::syscall3( ::sc::nr::$nr, $a1 as usize, $a2 as usize, $a3 as usize) ); ($nr:ident, $a1:expr, $a2:expr, $a3:expr, $a4:expr) => ( ::sc::syscall4( ::sc::nr::$nr, $a1 as usize, $a2 as usize, $a3 as usize, $a4 as usize) ); ($nr:ident, $a1:expr, $a2:expr, $a3:expr, $a4:expr, $a5:expr) => ( ::sc::syscall5( ::sc::nr::$nr, $a1 as usize, $a2 as usize, $a3 as usize, $a4 as usize, $a5 as usize) ); ($nr:ident, $a1:expr, $a2:expr, $a3:expr, $a4:expr, $a5:expr, $a6:expr) => ( ::sc::syscall6( ::sc::nr::$nr, $a1 as usize, $a2 as usize, $a3 as usize, $a4 as usize, $a5 as usize, $a6 as usize) ); ($nr:ident, $a1:expr, $a2:expr, $a3:expr, $a4:expr, $a5:expr, $a6:expr, $a7:expr) => ( ::sc::syscall7( ::sc::nr::$nr, $a1 as usize, $a2 as usize, $a3 as usize, $a4 as usize, $a5 as usize, $a6 as usize, $a7 as usize) ); } sc-0.2.7/src/platform/freebsd-x86_64/mod.rs000064400000000000000000000057550072674642500164110ustar 00000000000000// Copyright 2014 The syscall.rs Project Developers. See the // COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. //! This library was built for x86-64 FreeBSD. use core::arch::asm; pub mod nr; #[inline(always)] pub unsafe fn syscall0(mut n: usize) -> usize { asm!( "syscall", inout("rax") n, out("rcx") _, out("r11") _, options(nostack), ); n } #[inline(always)] pub unsafe fn syscall1(mut n: usize, a1: usize) -> usize { asm!( "syscall", inout("rax") n, in("rdi") a1, out("rcx") _, out("r11") _, options(nostack), ); n } #[inline(always)] pub unsafe fn syscall2(mut n: usize, a1: usize, a2: usize) -> usize { asm!( "syscall", inout("rax") n, in("rdi") a1, in("rsi") a2, out("rcx") _, out("r11") _, options(nostack), ); n } #[inline(always)] pub unsafe fn syscall3(mut n: usize, a1: usize, a2: usize, a3: usize) -> usize { asm!( "syscall", inout("rax") n, in("rdi") a1, in("rsi") a2, in("rdx") a3, out("rcx") _, out("r11") _, options(nostack), ); n } #[inline(always)] pub unsafe fn syscall4(mut n: usize, a1: usize, a2: usize, a3: usize, a4: usize) -> usize { asm!( "syscall", inout("rax") n, in("rdi") a1, in("rsi") a2, in("rdx") a3, in("r10") a4, out("rcx") _, out("r11") _, options(nostack), ); n } #[inline(always)] pub unsafe fn syscall5(mut n: usize, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize) -> usize { asm!( "syscall", inout("rax") n, in("rdi") a1, in("rsi") a2, in("rdx") a3, in("r10") a4, in("r8") a5, out("rcx") _, out("r11") _, options(nostack), ); n } #[inline(always)] pub unsafe fn syscall6(mut n: usize, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize, a6: usize) -> usize { asm!( "syscall", inout("rax") n, in("rdi") a1, in("rsi") a2, in("rdx") a3, in("r10") a4, in("r8") a5, in("r9") a6, out("rcx") _, out("r11") _, options(nostack), ); n } sc-0.2.7/src/platform/freebsd-x86_64/nr.rs000064400000000000000000000342500072674642500162410ustar 00000000000000// Copyright 2014 The syscall.rs Project Developers. See the // COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. //! System call numbers for x86-64 FreeBSD. pub const SYSCALL: usize = 0; pub const EXIT: usize = 1; pub const FORK: usize = 2; pub const READ: usize = 3; pub const WRITE: usize = 4; pub const OPEN: usize = 5; pub const CLOSE: usize = 6; pub const WAIT4: usize = 7; pub const LINK: usize = 9; pub const UNLINK: usize = 10; pub const CHDIR: usize = 12; pub const FCHDIR: usize = 13; pub const MKNOD: usize = 14; pub const CHMOD: usize = 15; pub const CHOWN: usize = 16; pub const BREAK: usize = 17; pub const FREEBSD4_GETFSSTAT: usize = 18; pub const GETPID: usize = 20; pub const MOUNT: usize = 21; pub const UNMOUNT: usize = 22; pub const SETUID: usize = 23; pub const GETUID: usize = 24; pub const GETEUID: usize = 25; pub const PTRACE: usize = 26; pub const RECVMSG: usize = 27; pub const SENDMSG: usize = 28; pub const RECVFROM: usize = 29; pub const ACCEPT: usize = 30; pub const GETPEERNAME: usize = 31; pub const GETSOCKNAME: usize = 32; pub const ACCESS: usize = 33; pub const CHFLAGS: usize = 34; pub const FCHFLAGS: usize = 35; pub const SYNC: usize = 36; pub const KILL: usize = 37; pub const GETPPID: usize = 39; pub const DUP: usize = 41; pub const PIPE: usize = 42; pub const GETEGID: usize = 43; pub const PROFIL: usize = 44; pub const KTRACE: usize = 45; pub const GETGID: usize = 47; pub const GETLOGIN: usize = 49; pub const SETLOGIN: usize = 50; pub const ACCT: usize = 51; pub const SIGALTSTACK: usize = 53; pub const IOCTL: usize = 54; pub const REBOOT: usize = 55; pub const REVOKE: usize = 56; pub const SYMLINK: usize = 57; pub const READLINK: usize = 58; pub const EXECVE: usize = 59; pub const UMASK: usize = 60; pub const CHROOT: usize = 61; pub const MSYNC: usize = 65; pub const VFORK: usize = 66; pub const SBRK: usize = 69; pub const SSTK: usize = 70; pub const VADVISE: usize = 72; pub const MUNMAP: usize = 73; pub const MPROTECT: usize = 74; pub const MADVISE: usize = 75; pub const MINCORE: usize = 78; pub const GETGROUPS: usize = 79; pub const SETGROUPS: usize = 80; pub const GETPGRP: usize = 81; pub const SETPGID: usize = 82; pub const SETITIMER: usize = 83; pub const SWAPON: usize = 85; pub const GETITIMER: usize = 86; pub const GETDTABLESIZE: usize = 89; pub const DUP2: usize = 90; pub const FCNTL: usize = 92; pub const SELECT: usize = 93; pub const FSYNC: usize = 95; pub const SETPRIORITY: usize = 96; pub const SOCKET: usize = 97; pub const CONNECT: usize = 98; pub const GETPRIORITY: usize = 100; pub const BIND: usize = 104; pub const SETSOCKOPT: usize = 105; pub const LISTEN: usize = 106; pub const GETTIMEOFDAY: usize = 116; pub const GETRUSAGE: usize = 117; pub const GETSOCKOPT: usize = 118; pub const READV: usize = 120; pub const WRITEV: usize = 121; pub const SETTIMEOFDAY: usize = 122; pub const FCHOWN: usize = 123; pub const FCHMOD: usize = 124; pub const SETREUID: usize = 126; pub const SETREGID: usize = 127; pub const RENAME: usize = 128; pub const FLOCK: usize = 131; pub const MKFIFO: usize = 132; pub const SENDTO: usize = 133; pub const SHUTDOWN: usize = 134; pub const SOCKETPAIR: usize = 135; pub const MKDIR: usize = 136; pub const RMDIR: usize = 137; pub const UTIMES: usize = 138; pub const ADJTIME: usize = 140; pub const SETSID: usize = 147; pub const QUOTACTL: usize = 148; pub const NLM_SYSCALL: usize = 154; pub const NFSSVC: usize = 155; pub const FREEBSD4_STATFS: usize = 157; pub const FREEBSD4_FSTATFS: usize = 158; pub const LGETFH: usize = 160; pub const GETFH: usize = 161; pub const FREEBSD4_GETDOMAINNAME: usize = 162; pub const FREEBSD4_SETDOMAINNAME: usize = 163; pub const FREEBSD4_UNAME: usize = 164; pub const SYSARCH: usize = 165; pub const RTPRIO: usize = 166; pub const SEMSYS: usize = 169; pub const MSGSYS: usize = 170; pub const SHMSYS: usize = 171; pub const FREEBSD6_PREAD: usize = 173; pub const FREEBSD6_PWRITE: usize = 174; pub const SETFIB: usize = 175; pub const NTP_ADJTIME: usize = 176; pub const SETGID: usize = 181; pub const SETEGID: usize = 182; pub const SETEUID: usize = 183; pub const STAT: usize = 188; pub const FSTAT: usize = 189; pub const LSTAT: usize = 190; pub const PATHCONF: usize = 191; pub const FPATHCONF: usize = 192; pub const GETRLIMIT: usize = 194; pub const SETRLIMIT: usize = 195; pub const GETDIRENTRIES: usize = 196; pub const FREEBSD6_MMAP: usize = 197; pub const _SYSCALL: usize = 198; pub const FREEBSD6_LSEEK: usize = 199; pub const FREEBSD6_TRUNCATE: usize = 200; pub const FREEBSD6_FTRUNCATE: usize = 201; pub const SYSCTL: usize = 202; pub const MLOCK: usize = 203; pub const MUNLOCK: usize = 204; pub const UNDELETE: usize = 205; pub const FUTIMES: usize = 206; pub const GETPGID: usize = 207; pub const POLL: usize = 209; pub const FREEBSD7___SEMCTL: usize = 220; pub const SEMGET: usize = 221; pub const SEMOP: usize = 222; pub const FREEBSD7_MSGCTL: usize = 224; pub const MSGGET: usize = 225; pub const MSGSND: usize = 226; pub const MSGRCV: usize = 227; pub const SHMAT: usize = 228; pub const FREEBSD7_SHMCTL: usize = 229; pub const SHMDT: usize = 230; pub const SHMGET: usize = 231; pub const CLOCK_GETTIME: usize = 232; pub const CLOCK_SETTIME: usize = 233; pub const CLOCK_GETRES: usize = 234; pub const KTIMER_CREATE: usize = 235; pub const KTIMER_DELETE: usize = 236; pub const KTIMER_SETTIME: usize = 237; pub const KTIMER_GETTIME: usize = 238; pub const KTIMER_GETOVERRUN: usize = 239; pub const NANOSLEEP: usize = 240; pub const FFCLOCK_GETCOUNTER: usize = 241; pub const FFCLOCK_SETESTIMATE: usize = 242; pub const FFCLOCK_GETESTIMATE: usize = 243; pub const CLOCK_GETCPUCLOCKID2: usize = 247; pub const NTP_GETTIME: usize = 248; pub const MINHERIT: usize = 250; pub const RFORK: usize = 251; pub const OPENBSD_POLL: usize = 252; pub const ISSETUGID: usize = 253; pub const LCHOWN: usize = 254; pub const AIO_READ: usize = 255; pub const AIO_WRITE: usize = 256; pub const LIO_LISTIO: usize = 257; pub const GETDENTS: usize = 272; pub const LCHMOD: usize = 274; pub const NETBSD_LCHOWN: usize = 275; pub const LUTIMES: usize = 276; pub const NETBSD_MSYNC: usize = 277; pub const NSTAT: usize = 278; pub const NFSTAT: usize = 279; pub const NLSTAT: usize = 280; pub const PREADV: usize = 289; pub const PWRITEV: usize = 290; pub const FREEBSD4_FHSTATFS: usize = 297; pub const FHOPEN: usize = 298; pub const FHSTAT: usize = 299; pub const MODNEXT: usize = 300; pub const MODSTAT: usize = 301; pub const MODFNEXT: usize = 302; pub const MODFIND: usize = 303; pub const KLDLOAD: usize = 304; pub const KLDUNLOAD: usize = 305; pub const KLDFIND: usize = 306; pub const KLDNEXT: usize = 307; pub const KLDSTAT: usize = 308; pub const KLDFIRSTMOD: usize = 309; pub const GETSID: usize = 310; pub const SETRESUID: usize = 311; pub const SETRESGID: usize = 312; pub const AIO_RETURN: usize = 314; pub const AIO_SUSPEND: usize = 315; pub const AIO_CANCEL: usize = 316; pub const AIO_ERROR: usize = 317; pub const OAIO_READ: usize = 318; pub const OAIO_WRITE: usize = 319; pub const OLIO_LISTIO: usize = 320; pub const YIELD: usize = 321; pub const MLOCKALL: usize = 324; pub const MUNLOCKALL: usize = 325; pub const GETCWD: usize = 326; pub const SCHED_SETPARAM: usize = 327; pub const SCHED_GETPARAM: usize = 328; pub const SCHED_SETSCHEDULER: usize = 329; pub const SCHED_GETSCHEDULER: usize = 330; pub const SCHED_YIELD: usize = 331; pub const SCHED_GET_PRIORITY_MAX: usize = 332; pub const SCHED_GET_PRIORITY_MIN: usize = 333; pub const SCHED_RR_GET_INTERVAL: usize = 334; pub const UTRACE: usize = 335; pub const FREEBSD4_SENDFILE: usize = 336; pub const KLDSYM: usize = 337; pub const JAIL: usize = 338; pub const NNPFS_SYSCALL: usize = 339; pub const SIGPROCMASK: usize = 340; pub const SIGSUSPEND: usize = 341; pub const FREEBSD4_SIGACTION: usize = 342; pub const SIGPENDING: usize = 343; pub const FREEBSD4_SIGRETURN: usize = 344; pub const SIGTIMEDWAIT: usize = 345; pub const SIGWAITINFO: usize = 346; pub const ACL_GET_FILE: usize = 347; pub const ACL_SET_FILE: usize = 348; pub const ACL_GET_FD: usize = 349; pub const ACL_SET_FD: usize = 350; pub const ACL_DELETE_FILE: usize = 351; pub const ACL_DELETE_FD: usize = 352; pub const ACL_ACLCHECK_FILE: usize = 353; pub const ACL_ACLCHECK_FD: usize = 354; pub const EXTATTRCTL: usize = 355; pub const EXTATTR_SET_FILE: usize = 356; pub const EXTATTR_GET_FILE: usize = 357; pub const EXTATTR_DELETE_FILE: usize = 358; pub const AIO_WAITCOMPLETE: usize = 359; pub const GETRESUID: usize = 360; pub const GETRESGID: usize = 361; pub const KQUEUE: usize = 362; pub const KEVENT: usize = 363; pub const EXTATTR_SET_FD: usize = 371; pub const EXTATTR_GET_FD: usize = 372; pub const EXTATTR_DELETE_FD: usize = 373; pub const SETUGID: usize = 374; pub const EACCESS: usize = 376; pub const AFS3_SYSCALL: usize = 377; pub const NMOUNT: usize = 378; pub const MAC_GET_PROC: usize = 384; pub const MAC_SET_PROC: usize = 385; pub const MAC_GET_FD: usize = 386; pub const MAC_GET_FILE: usize = 387; pub const MAC_SET_FD: usize = 388; pub const MAC_SET_FILE: usize = 389; pub const KENV: usize = 390; pub const LCHFLAGS: usize = 391; pub const UUIDGEN: usize = 392; pub const SENDFILE: usize = 393; pub const MAC_SYSCALL: usize = 394; pub const GETFSSTAT: usize = 395; pub const STATFS: usize = 396; pub const FSTATFS: usize = 397; pub const FHSTATFS: usize = 398; pub const KSEM_CLOSE: usize = 400; pub const KSEM_POST: usize = 401; pub const KSEM_WAIT: usize = 402; pub const KSEM_TRYWAIT: usize = 403; pub const KSEM_INIT: usize = 404; pub const KSEM_OPEN: usize = 405; pub const KSEM_UNLINK: usize = 406; pub const KSEM_GETVALUE: usize = 407; pub const KSEM_DESTROY: usize = 408; pub const MAC_GET_PID: usize = 409; pub const MAC_GET_LINK: usize = 410; pub const MAC_SET_LINK: usize = 411; pub const EXTATTR_SET_LINK: usize = 412; pub const EXTATTR_GET_LINK: usize = 413; pub const EXTATTR_DELETE_LINK: usize = 414; pub const MAC_EXECVE: usize = 415; pub const SIGACTION: usize = 416; pub const SIGRETURN: usize = 417; pub const GETCONTEXT: usize = 421; pub const SETCONTEXT: usize = 422; pub const SWAPCONTEXT: usize = 423; pub const SWAPOFF: usize = 424; pub const ACL_GET_LINK: usize = 425; pub const ACL_SET_LINK: usize = 426; pub const ACL_DELETE_LINK: usize = 427; pub const ACL_ACLCHECK_LINK: usize = 428; pub const SIGWAIT: usize = 429; pub const THR_CREATE: usize = 430; pub const THR_EXIT: usize = 431; pub const THR_SELF: usize = 432; pub const THR_KILL: usize = 433; pub const _UMTX_LOCK: usize = 434; pub const _UMTX_UNLOCK: usize = 435; pub const JAIL_ATTACH: usize = 436; pub const EXTATTR_LIST_FD: usize = 437; pub const EXTATTR_LIST_FILE: usize = 438; pub const EXTATTR_LIST_LINK: usize = 439; pub const KSEM_TIMEDWAIT: usize = 441; pub const THR_SUSPEND: usize = 442; pub const THR_WAKE: usize = 443; pub const KLDUNLOADF: usize = 444; pub const AUDIT: usize = 445; pub const AUDITON: usize = 446; pub const GETAUID: usize = 447; pub const SETAUID: usize = 448; pub const GETAUDIT: usize = 449; pub const SETAUDIT: usize = 450; pub const GETAUDIT_ADDR: usize = 451; pub const SETAUDIT_ADDR: usize = 452; pub const AUDITCTL: usize = 453; pub const _UMTX_OP: usize = 454; pub const THR_NEW: usize = 455; pub const SIGQUEUE: usize = 456; pub const KMQ_OPEN: usize = 457; pub const KMQ_SETATTR: usize = 458; pub const KMQ_TIMEDRECEIVE: usize = 459; pub const KMQ_TIMEDSEND: usize = 460; pub const KMQ_NOTIFY: usize = 461; pub const KMQ_UNLINK: usize = 462; pub const ABORT2: usize = 463; pub const THR_SET_NAME: usize = 464; pub const AIO_FSYNC: usize = 465; pub const RTPRIO_THREAD: usize = 466; pub const SCTP_PEELOFF: usize = 471; pub const SCTP_GENERIC_SENDMSG: usize = 472; pub const SCTP_GENERIC_SENDMSG_IOV: usize = 473; pub const SCTP_GENERIC_RECVMSG: usize = 474; pub const PREAD: usize = 475; pub const PWRITE: usize = 476; pub const MMAP: usize = 477; pub const LSEEK: usize = 478; pub const TRUNCATE: usize = 479; pub const FTRUNCATE: usize = 480; pub const THR_KILL2: usize = 481; pub const SHM_OPEN: usize = 482; pub const SHM_UNLINK: usize = 483; pub const CPUSET: usize = 484; pub const CPUSET_SETID: usize = 485; pub const CPUSET_GETID: usize = 486; pub const CPUSET_GETAFFINITY: usize = 487; pub const CPUSET_SETAFFINITY: usize = 488; pub const FACCESSAT: usize = 489; pub const FCHMODAT: usize = 490; pub const FCHOWNAT: usize = 491; pub const FEXECVE: usize = 492; pub const FSTATAT: usize = 493; pub const FUTIMESAT: usize = 494; pub const LINKAT: usize = 495; pub const MKDIRAT: usize = 496; pub const MKFIFOAT: usize = 497; pub const MKNODAT: usize = 498; pub const OPENAT: usize = 499; pub const READLINKAT: usize = 500; pub const RENAMEAT: usize = 501; pub const SYMLINKAT: usize = 502; pub const UNLINKAT: usize = 503; pub const POSIX_OPENPT: usize = 504; pub const GSSD_SYSCALL: usize = 505; pub const JAIL_GET: usize = 506; pub const JAIL_SET: usize = 507; pub const JAIL_REMOVE: usize = 508; pub const CLOSEFROM: usize = 509; pub const SEMCTL: usize = 510; pub const MSGCTL: usize = 511; pub const SHMCTL: usize = 512; pub const LPATHCONF: usize = 513; pub const CAP_RIGHTS_GET: usize = 515; pub const CAP_ENTER: usize = 516; pub const CAP_GETMODE: usize = 517; pub const PDFORK: usize = 518; pub const PDKILL: usize = 519; pub const PDGETPID: usize = 520; pub const PSELECT: usize = 522; pub const GETLOGINCLASS: usize = 523; pub const SETLOGINCLASS: usize = 524; pub const RCTL_GET_RACCT: usize = 525; pub const RCTL_GET_RULES: usize = 526; pub const RCTL_GET_LIMITS: usize = 527; pub const RCTL_ADD_RULE: usize = 528; pub const RCTL_REMOVE_RULE: usize = 529; pub const POSIX_FALLOCATE: usize = 530; pub const POSIX_FADVISE: usize = 531; pub const WAIT6: usize = 532; pub const CAP_RIGHTS_LIMIT: usize = 533; pub const CAP_IOCTLS_LIMIT: usize = 534; pub const CAP_IOCTLS_GET: usize = 535; pub const CAP_FCNTLS_LIMIT: usize = 536; pub const CAP_FCNTLS_GET: usize = 537; pub const BINDAT: usize = 538; pub const CONNECTAT: usize = 539; pub const CHFLAGSAT: usize = 540; pub const ACCEPT4: usize = 541; pub const PIPE2: usize = 542; pub const AIO_MLOCK: usize = 543; pub const PROCCTL: usize = 544; pub const PPOLL: usize = 545; sc-0.2.7/src/platform/linux-aarch64/mod.rs000064400000000000000000000055150072674642500164220ustar 00000000000000// Copyright 2017 The syscall.rs Project Developers. See the // COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Veecxon 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. //! This library was built for aarch64 Linux. use core::arch::asm; pub mod nr; #[inline(always)] pub unsafe fn syscall0(n: usize) -> usize { let ret: usize; asm!( "svc 0", in("x8") n, out("x0") ret, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall1(n: usize, a1: usize) -> usize { let ret: usize; asm!( "svc 0", in("x8") n, inout("x0") a1 => ret, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall2(n: usize, a1: usize, a2: usize) -> usize { let ret: usize; asm!( "svc 0", in("x8") n, inout("x0") a1 => ret, in("x1") a2, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall3(n: usize, a1: usize, a2: usize, a3: usize) -> usize { let ret: usize; asm!( "svc 0", in("x8") n, inout("x0") a1 => ret, in("x1") a2, in("x2") a3, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall4(n: usize, a1: usize, a2: usize, a3: usize, a4: usize) -> usize { let ret: usize; asm!( "svc 0", in("x8") n, inout("x0") a1 => ret, in("x1") a2, in("x2") a3, in("x3") a4, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall5(n: usize, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize) -> usize { let ret: usize; asm!( "svc 0", in("x8") n, inout("x0") a1 => ret, in("x1") a2, in("x2") a3, in("x3") a4, in("x4") a5, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall6(n: usize, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize, a6: usize) -> usize { let ret: usize; asm!( "svc 0", in("x8") n, inout("x0") a1 => ret, in("x1") a2, in("x2") a3, in("x3") a4, in("x4") a5, in("x5") a6, options(nostack), ); ret } sc-0.2.7/src/platform/linux-aarch64/nr.rs000064400000000000000000000237210072674642500162610ustar 00000000000000/* automatically generated by nr_from_src.py */ pub const ACCEPT: usize = 202; pub const ACCEPT4: usize = 242; pub const ACCT: usize = 89; pub const ADD_KEY: usize = 217; pub const ADJTIMEX: usize = 171; pub const ARCH_SPECIFIC_SYSCALL: usize = 244; pub const BIND: usize = 200; pub const BPF: usize = 280; pub const BRK: usize = 214; pub const CAPGET: usize = 90; pub const CAPSET: usize = 91; pub const CHDIR: usize = 49; pub const CHROOT: usize = 51; pub const CLOCK_ADJTIME: usize = 266; pub const CLOCK_GETRES: usize = 114; pub const CLOCK_GETTIME: usize = 113; pub const CLOCK_NANOSLEEP: usize = 115; pub const CLOCK_SETTIME: usize = 112; pub const CLONE: usize = 220; pub const CLONE3: usize = 435; pub const CLOSE: usize = 57; pub const CLOSE_RANGE: usize = 436; pub const CONNECT: usize = 203; pub const COPY_FILE_RANGE: usize = 285; pub const DELETE_MODULE: usize = 106; pub const DUP: usize = 23; pub const DUP3: usize = 24; pub const EPOLL_CREATE1: usize = 20; pub const EPOLL_CTL: usize = 21; pub const EPOLL_PWAIT: usize = 22; pub const EPOLL_PWAIT2: usize = 441; pub const EVENTFD2: usize = 19; pub const EXECVE: usize = 221; pub const EXECVEAT: usize = 281; pub const EXIT: usize = 93; pub const EXIT_GROUP: usize = 94; pub const FACCESSAT: usize = 48; pub const FACCESSAT2: usize = 439; pub const FADVISE64: usize = 223; pub const FALLOCATE: usize = 47; pub const FANOTIFY_INIT: usize = 262; pub const FANOTIFY_MARK: usize = 263; pub const FCHDIR: usize = 50; pub const FCHMOD: usize = 52; pub const FCHMODAT: usize = 53; pub const FCHOWN: usize = 55; pub const FCHOWNAT: usize = 54; pub const FCNTL: usize = 25; pub const FDATASYNC: usize = 83; pub const FGETXATTR: usize = 10; pub const FINIT_MODULE: usize = 273; pub const FLISTXATTR: usize = 13; pub const FLOCK: usize = 32; pub const FREMOVEXATTR: usize = 16; pub const FSCONFIG: usize = 431; pub const FSETXATTR: usize = 7; pub const FSMOUNT: usize = 432; pub const FSOPEN: usize = 430; pub const FSPICK: usize = 433; pub const FSTAT: usize = 80; pub const FSTATFS: usize = 44; pub const FSYNC: usize = 82; pub const FTRUNCATE: usize = 46; pub const FUTEX: usize = 98; pub const GET_MEMPOLICY: usize = 236; pub const GET_ROBUST_LIST: usize = 100; pub const GETCPU: usize = 168; pub const GETCWD: usize = 17; pub const GETDENTS64: usize = 61; pub const GETEGID: usize = 177; pub const GETEUID: usize = 175; pub const GETGID: usize = 176; pub const GETGROUPS: usize = 158; pub const GETITIMER: usize = 102; pub const GETPEERNAME: usize = 205; pub const GETPGID: usize = 155; pub const GETPID: usize = 172; pub const GETPPID: usize = 173; pub const GETPRIORITY: usize = 141; pub const GETRANDOM: usize = 278; pub const GETRESGID: usize = 150; pub const GETRESUID: usize = 148; pub const GETRLIMIT: usize = 163; pub const GETRUSAGE: usize = 165; pub const GETSID: usize = 156; pub const GETSOCKNAME: usize = 204; pub const GETSOCKOPT: usize = 209; pub const GETTID: usize = 178; pub const GETTIMEOFDAY: usize = 169; pub const GETUID: usize = 174; pub const GETXATTR: usize = 8; pub const INIT_MODULE: usize = 105; pub const INOTIFY_ADD_WATCH: usize = 27; pub const INOTIFY_INIT1: usize = 26; pub const INOTIFY_RM_WATCH: usize = 28; pub const IO_CANCEL: usize = 3; pub const IO_DESTROY: usize = 1; pub const IO_GETEVENTS: usize = 4; pub const IO_PGETEVENTS: usize = 292; pub const IO_SETUP: usize = 0; pub const IO_SUBMIT: usize = 2; pub const IO_URING_ENTER: usize = 426; pub const IO_URING_REGISTER: usize = 427; pub const IO_URING_SETUP: usize = 425; pub const IOCTL: usize = 29; pub const IOPRIO_GET: usize = 31; pub const IOPRIO_SET: usize = 30; pub const KCMP: usize = 272; pub const KEXEC_FILE_LOAD: usize = 294; pub const KEXEC_LOAD: usize = 104; pub const KEYCTL: usize = 219; pub const KILL: usize = 129; pub const LGETXATTR: usize = 9; pub const LINKAT: usize = 37; pub const LISTEN: usize = 201; pub const LISTXATTR: usize = 11; pub const LLISTXATTR: usize = 12; pub const LOOKUP_DCOOKIE: usize = 18; pub const LREMOVEXATTR: usize = 15; pub const LSEEK: usize = 62; pub const LSETXATTR: usize = 6; pub const MADVISE: usize = 233; pub const MBIND: usize = 235; pub const MEMBARRIER: usize = 283; pub const MEMFD_CREATE: usize = 279; pub const MIGRATE_PAGES: usize = 238; pub const MINCORE: usize = 232; pub const MKDIRAT: usize = 34; pub const MKNODAT: usize = 33; pub const MLOCK: usize = 228; pub const MLOCK2: usize = 284; pub const MLOCKALL: usize = 230; pub const MMAP: usize = 222; pub const MOUNT: usize = 40; pub const MOUNT_SETATTR: usize = 442; pub const MOVE_MOUNT: usize = 429; pub const MOVE_PAGES: usize = 239; pub const MPROTECT: usize = 226; pub const MQ_GETSETATTR: usize = 185; pub const MQ_NOTIFY: usize = 184; pub const MQ_OPEN: usize = 180; pub const MQ_TIMEDRECEIVE: usize = 183; pub const MQ_TIMEDSEND: usize = 182; pub const MQ_UNLINK: usize = 181; pub const MREMAP: usize = 216; pub const MSGCTL: usize = 187; pub const MSGGET: usize = 186; pub const MSGRCV: usize = 188; pub const MSGSND: usize = 189; pub const MSYNC: usize = 227; pub const MUNLOCK: usize = 229; pub const MUNLOCKALL: usize = 231; pub const MUNMAP: usize = 215; pub const NAME_TO_HANDLE_AT: usize = 264; pub const NANOSLEEP: usize = 101; pub const NEWFSTATAT: usize = 79; pub const NFSSERVCTL: usize = 42; pub const OPEN_BY_HANDLE_AT: usize = 265; pub const OPEN_TREE: usize = 428; pub const OPENAT: usize = 56; pub const OPENAT2: usize = 437; pub const PERF_EVENT_OPEN: usize = 241; pub const PERSONALITY: usize = 92; pub const PIDFD_GETFD: usize = 438; pub const PIDFD_OPEN: usize = 434; pub const PIDFD_SEND_SIGNAL: usize = 424; pub const PIPE2: usize = 59; pub const PIVOT_ROOT: usize = 41; pub const PKEY_ALLOC: usize = 289; pub const PKEY_FREE: usize = 290; pub const PKEY_MPROTECT: usize = 288; pub const PPOLL: usize = 73; pub const PRCTL: usize = 167; pub const PREAD64: usize = 67; pub const PREADV: usize = 69; pub const PREADV2: usize = 286; pub const PRLIMIT64: usize = 261; pub const PROCESS_MADVISE: usize = 440; pub const PROCESS_VM_READV: usize = 270; pub const PROCESS_VM_WRITEV: usize = 271; pub const PSELECT6: usize = 72; pub const PTRACE: usize = 117; pub const PWRITE64: usize = 68; pub const PWRITEV: usize = 70; pub const PWRITEV2: usize = 287; pub const QUOTACTL: usize = 60; pub const READ: usize = 63; pub const READAHEAD: usize = 213; pub const READLINKAT: usize = 78; pub const READV: usize = 65; pub const REBOOT: usize = 142; pub const RECVFROM: usize = 207; pub const RECVMMSG: usize = 243; pub const RECVMSG: usize = 212; pub const REMAP_FILE_PAGES: usize = 234; pub const REMOVEXATTR: usize = 14; pub const RENAMEAT: usize = 38; pub const RENAMEAT2: usize = 276; pub const REQUEST_KEY: usize = 218; pub const RESTART_SYSCALL: usize = 128; pub const RSEQ: usize = 293; pub const RT_SIGACTION: usize = 134; pub const RT_SIGPENDING: usize = 136; pub const RT_SIGPROCMASK: usize = 135; pub const RT_SIGQUEUEINFO: usize = 138; pub const RT_SIGRETURN: usize = 139; pub const RT_SIGSUSPEND: usize = 133; pub const RT_SIGTIMEDWAIT: usize = 137; pub const RT_TGSIGQUEUEINFO: usize = 240; pub const SCHED_GET_PRIORITY_MAX: usize = 125; pub const SCHED_GET_PRIORITY_MIN: usize = 126; pub const SCHED_GETAFFINITY: usize = 123; pub const SCHED_GETATTR: usize = 275; pub const SCHED_GETPARAM: usize = 121; pub const SCHED_GETSCHEDULER: usize = 120; pub const SCHED_RR_GET_INTERVAL: usize = 127; pub const SCHED_SETAFFINITY: usize = 122; pub const SCHED_SETATTR: usize = 274; pub const SCHED_SETPARAM: usize = 118; pub const SCHED_SETSCHEDULER: usize = 119; pub const SCHED_YIELD: usize = 124; pub const SECCOMP: usize = 277; pub const SEMCTL: usize = 191; pub const SEMGET: usize = 190; pub const SEMOP: usize = 193; pub const SEMTIMEDOP: usize = 192; pub const SENDFILE: usize = 71; pub const SENDMMSG: usize = 269; pub const SENDMSG: usize = 211; pub const SENDTO: usize = 206; pub const SET_MEMPOLICY: usize = 237; pub const SET_ROBUST_LIST: usize = 99; pub const SET_TID_ADDRESS: usize = 96; pub const SETDOMAINNAME: usize = 162; pub const SETFSGID: usize = 152; pub const SETFSUID: usize = 151; pub const SETGID: usize = 144; pub const SETGROUPS: usize = 159; pub const SETHOSTNAME: usize = 161; pub const SETITIMER: usize = 103; pub const SETNS: usize = 268; pub const SETPGID: usize = 154; pub const SETPRIORITY: usize = 140; pub const SETREGID: usize = 143; pub const SETRESGID: usize = 149; pub const SETRESUID: usize = 147; pub const SETREUID: usize = 145; pub const SETRLIMIT: usize = 164; pub const SETSID: usize = 157; pub const SETSOCKOPT: usize = 208; pub const SETTIMEOFDAY: usize = 170; pub const SETUID: usize = 146; pub const SETXATTR: usize = 5; pub const SHMAT: usize = 196; pub const SHMCTL: usize = 195; pub const SHMDT: usize = 197; pub const SHMGET: usize = 194; pub const SHUTDOWN: usize = 210; pub const SIGALTSTACK: usize = 132; pub const SIGNALFD4: usize = 74; pub const SOCKET: usize = 198; pub const SOCKETPAIR: usize = 199; pub const SPLICE: usize = 76; pub const STATFS: usize = 43; pub const STATX: usize = 291; pub const SWAPOFF: usize = 225; pub const SWAPON: usize = 224; pub const SYMLINKAT: usize = 36; pub const SYNC: usize = 81; pub const SYNC_FILE_RANGE: usize = 84; pub const SYNCFS: usize = 267; pub const SYSCALLS: usize = 443; pub const SYSINFO: usize = 179; pub const SYSLOG: usize = 116; pub const TEE: usize = 77; pub const TGKILL: usize = 131; pub const TIMER_CREATE: usize = 107; pub const TIMER_DELETE: usize = 111; pub const TIMER_GETOVERRUN: usize = 109; pub const TIMER_GETTIME: usize = 108; pub const TIMER_SETTIME: usize = 110; pub const TIMERFD_CREATE: usize = 85; pub const TIMERFD_GETTIME: usize = 87; pub const TIMERFD_SETTIME: usize = 86; pub const TIMES: usize = 153; pub const TKILL: usize = 130; pub const TRUNCATE: usize = 45; pub const UMASK: usize = 166; pub const UMOUNT2: usize = 39; pub const UNAME: usize = 160; pub const UNLINKAT: usize = 35; pub const UNSHARE: usize = 97; pub const USERFAULTFD: usize = 282; pub const UTIMENSAT: usize = 88; pub const VHANGUP: usize = 58; pub const VMSPLICE: usize = 75; pub const WAIT4: usize = 260; pub const WAITID: usize = 95; pub const WRITE: usize = 64; pub const WRITEV: usize = 66; sc-0.2.7/src/platform/linux-armeabi/mod.rs000064400000000000000000000064720072674642500165750ustar 00000000000000// Copyright 2014 The syscall.rs Project Developers. See the // COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Veecxon 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except accoebxng to those terms. //! This library was built for arm Linux. pub mod nr; #[inline(always)] pub unsafe fn syscall0(n: usize) -> usize { let ret: usize; llvm_asm!("swi 0" : "={r0}"(ret) : "{r7}"(n) : "memory" "cc" : "volatile"); ret } #[inline(always)] pub unsafe fn syscall1(n: usize, a1: usize) -> usize { let ret: usize; llvm_asm!("swi 0" : "={r0}"(ret) : "{r7}"(n) "{r0}"(a1) : "memory" "cc" : "volatile"); ret } #[inline(always)] pub unsafe fn syscall2(n: usize, a1: usize, a2: usize) -> usize { let ret: usize; llvm_asm!("swi 0" : "={r0}"(ret) : "{r7}"(n) "{r0}"(a1) "{r1}"(a2) : "memory" "cc" : "volatile"); ret } #[inline(always)] pub unsafe fn syscall3(n: usize, a1: usize, a2: usize, a3: usize) -> usize { let ret: usize; llvm_asm!("swi 0" : "={r0}"(ret) : "{r7}"(n) "{r0}"(a1) "{r1}"(a2) "{r2}"(a3) : "memory" "cc" : "volatile"); ret } #[inline(always)] pub unsafe fn syscall4(n: usize, a1: usize, a2: usize, a3: usize, a4: usize) -> usize { let ret: usize; llvm_asm!("swi 0" : "={r0}"(ret) : "{r7}"(n) "{r0}"(a1) "{r1}"(a2) "{r2}"(a3) "{r3}"(a4) : "memory" "cc" : "volatile"); ret } #[inline(always)] pub unsafe fn syscall5(n: usize, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize) -> usize { let ret: usize; llvm_asm!("swi 0" : "={r0}"(ret) : "{r7}"(n) "{r0}"(a1) "{r1}"(a2) "{r2}"(a3) "{r3}"(a4) "{r4}"(a5) : "memory" "cc" : "volatile"); ret } #[inline(always)] pub unsafe fn syscall6(n: usize, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize, a6: usize) -> usize { let ret: usize; llvm_asm!("swi 0" : "={r0}"(ret) : "{r7}"(n) "{r0}"(a1) "{r1}"(a2) "{r2}"(a3) "{r3}"(a4) "{r4}"(a5) "{r5}"(a6) : "memory" "cc" : "volatile"); ret } #[inline(always)] pub unsafe fn syscall7(n: usize, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize, a6: usize, a7: usize) -> usize { let ret: usize; llvm_asm!("swi 0" : "={r0}"(ret) : "{r7}"(n) "{r0}"(a1) "{r1}"(a2) "{r2}"(a3) "{r3}"(a4) "{r4}"(a5) "{r5}"(a6) "{r6}"(a7) : "memory" "cc" : "volatile"); ret } sc-0.2.7/src/platform/linux-armeabi/nr.rs000064400000000000000000000327400072674642500164320ustar 00000000000000/* automatically generated by nr_from_src.py */ pub const ARM_BREAKPOINT: usize = 983041; pub const ARM_CACHEFLUSH: usize = 983042; pub const ARM_GET_TLS: usize = 983046; pub const ARM_SET_TLS: usize = 983045; pub const ARM_USR26: usize = 983043; pub const ARM_USR32: usize = 983044; pub const _LLSEEK: usize = 140; pub const _NEWSELECT: usize = 142; pub const _SYSCTL: usize = 149; pub const ACCEPT: usize = 285; pub const ACCEPT4: usize = 366; pub const ACCESS: usize = 33; pub const ACCT: usize = 51; pub const ADD_KEY: usize = 309; pub const ADJTIMEX: usize = 124; pub const ARM_FADVISE64_64: usize = 270; pub const ARM_SYNC_FILE_RANGE: usize = 341; pub const BDFLUSH: usize = 134; pub const BIND: usize = 282; pub const BPF: usize = 386; pub const BRK: usize = 45; pub const CAPGET: usize = 184; pub const CAPSET: usize = 185; pub const CHDIR: usize = 12; pub const CHMOD: usize = 15; pub const CHOWN: usize = 182; pub const CHOWN32: usize = 212; pub const CHROOT: usize = 61; pub const CLOCK_ADJTIME: usize = 372; pub const CLOCK_ADJTIME64: usize = 405; pub const CLOCK_GETRES: usize = 264; pub const CLOCK_GETRES_TIME64: usize = 406; pub const CLOCK_GETTIME: usize = 263; pub const CLOCK_GETTIME64: usize = 403; pub const CLOCK_NANOSLEEP: usize = 265; pub const CLOCK_NANOSLEEP_TIME64: usize = 407; pub const CLOCK_SETTIME: usize = 262; pub const CLOCK_SETTIME64: usize = 404; pub const CLONE: usize = 120; pub const CLONE3: usize = 435; pub const CLOSE: usize = 6; pub const CLOSE_RANGE: usize = 436; pub const CONNECT: usize = 283; pub const COPY_FILE_RANGE: usize = 391; pub const CREAT: usize = 8; pub const DELETE_MODULE: usize = 129; pub const DUP: usize = 41; pub const DUP2: usize = 63; pub const DUP3: usize = 358; pub const EPOLL_CREATE: usize = 250; pub const EPOLL_CREATE1: usize = 357; pub const EPOLL_CTL: usize = 251; pub const EPOLL_PWAIT: usize = 346; pub const EPOLL_PWAIT2: usize = 441; pub const EPOLL_WAIT: usize = 252; pub const EVENTFD: usize = 351; pub const EVENTFD2: usize = 356; pub const EXECVE: usize = 11; pub const EXECVEAT: usize = 387; pub const EXIT: usize = 1; pub const EXIT_GROUP: usize = 248; pub const FACCESSAT: usize = 334; pub const FACCESSAT2: usize = 439; pub const FALLOCATE: usize = 352; pub const FANOTIFY_INIT: usize = 367; pub const FANOTIFY_MARK: usize = 368; pub const FCHDIR: usize = 133; pub const FCHMOD: usize = 94; pub const FCHMODAT: usize = 333; pub const FCHOWN: usize = 95; pub const FCHOWN32: usize = 207; pub const FCHOWNAT: usize = 325; pub const FCNTL: usize = 55; pub const FCNTL64: usize = 221; pub const FDATASYNC: usize = 148; pub const FGETXATTR: usize = 231; pub const FINIT_MODULE: usize = 379; pub const FLISTXATTR: usize = 234; pub const FLOCK: usize = 143; pub const FORK: usize = 2; pub const FREMOVEXATTR: usize = 237; pub const FSCONFIG: usize = 431; pub const FSETXATTR: usize = 228; pub const FSMOUNT: usize = 432; pub const FSOPEN: usize = 430; pub const FSPICK: usize = 433; pub const FSTAT: usize = 108; pub const FSTAT64: usize = 197; pub const FSTATAT64: usize = 327; pub const FSTATFS: usize = 100; pub const FSTATFS64: usize = 267; pub const FSYNC: usize = 118; pub const FTRUNCATE: usize = 93; pub const FTRUNCATE64: usize = 194; pub const FUTEX: usize = 240; pub const FUTEX_TIME64: usize = 422; pub const FUTIMESAT: usize = 326; pub const GET_MEMPOLICY: usize = 320; pub const GET_ROBUST_LIST: usize = 339; pub const GETCPU: usize = 345; pub const GETCWD: usize = 183; pub const GETDENTS: usize = 141; pub const GETDENTS64: usize = 217; pub const GETEGID: usize = 50; pub const GETEGID32: usize = 202; pub const GETEUID: usize = 49; pub const GETEUID32: usize = 201; pub const GETGID: usize = 47; pub const GETGID32: usize = 200; pub const GETGROUPS: usize = 80; pub const GETGROUPS32: usize = 205; pub const GETITIMER: usize = 105; pub const GETPEERNAME: usize = 287; pub const GETPGID: usize = 132; pub const GETPGRP: usize = 65; pub const GETPID: usize = 20; pub const GETPPID: usize = 64; pub const GETPRIORITY: usize = 96; pub const GETRANDOM: usize = 384; pub const GETRESGID: usize = 171; pub const GETRESGID32: usize = 211; pub const GETRESUID: usize = 165; pub const GETRESUID32: usize = 209; pub const GETRUSAGE: usize = 77; pub const GETSID: usize = 147; pub const GETSOCKNAME: usize = 286; pub const GETSOCKOPT: usize = 295; pub const GETTID: usize = 224; pub const GETTIMEOFDAY: usize = 78; pub const GETUID: usize = 24; pub const GETUID32: usize = 199; pub const GETXATTR: usize = 229; pub const INIT_MODULE: usize = 128; pub const INOTIFY_ADD_WATCH: usize = 317; pub const INOTIFY_INIT: usize = 316; pub const INOTIFY_INIT1: usize = 360; pub const INOTIFY_RM_WATCH: usize = 318; pub const IO_CANCEL: usize = 247; pub const IO_DESTROY: usize = 244; pub const IO_GETEVENTS: usize = 245; pub const IO_PGETEVENTS: usize = 399; pub const IO_PGETEVENTS_TIME64: usize = 416; pub const IO_SETUP: usize = 243; pub const IO_SUBMIT: usize = 246; pub const IO_URING_ENTER: usize = 426; pub const IO_URING_REGISTER: usize = 427; pub const IO_URING_SETUP: usize = 425; pub const IOCTL: usize = 54; pub const IOPRIO_GET: usize = 315; pub const IOPRIO_SET: usize = 314; pub const KCMP: usize = 378; pub const KEXEC_FILE_LOAD: usize = 401; pub const KEXEC_LOAD: usize = 347; pub const KEYCTL: usize = 311; pub const KILL: usize = 37; pub const LCHOWN: usize = 16; pub const LCHOWN32: usize = 198; pub const LGETXATTR: usize = 230; pub const LINK: usize = 9; pub const LINKAT: usize = 330; pub const LISTEN: usize = 284; pub const LISTXATTR: usize = 232; pub const LLISTXATTR: usize = 233; pub const LOOKUP_DCOOKIE: usize = 249; pub const LREMOVEXATTR: usize = 236; pub const LSEEK: usize = 19; pub const LSETXATTR: usize = 227; pub const LSTAT: usize = 107; pub const LSTAT64: usize = 196; pub const MADVISE: usize = 220; pub const MBIND: usize = 319; pub const MEMBARRIER: usize = 389; pub const MEMFD_CREATE: usize = 385; pub const MIGRATE_PAGES: usize = 400; pub const MINCORE: usize = 219; pub const MKDIR: usize = 39; pub const MKDIRAT: usize = 323; pub const MKNOD: usize = 14; pub const MKNODAT: usize = 324; pub const MLOCK: usize = 150; pub const MLOCK2: usize = 390; pub const MLOCKALL: usize = 152; pub const MMAP2: usize = 192; pub const MOUNT: usize = 21; pub const MOUNT_SETATTR: usize = 442; pub const MOVE_MOUNT: usize = 429; pub const MOVE_PAGES: usize = 344; pub const MPROTECT: usize = 125; pub const MQ_GETSETATTR: usize = 279; pub const MQ_NOTIFY: usize = 278; pub const MQ_OPEN: usize = 274; pub const MQ_TIMEDRECEIVE: usize = 277; pub const MQ_TIMEDRECEIVE_TIME64: usize = 419; pub const MQ_TIMEDSEND: usize = 276; pub const MQ_TIMEDSEND_TIME64: usize = 418; pub const MQ_UNLINK: usize = 275; pub const MREMAP: usize = 163; pub const MSGCTL: usize = 304; pub const MSGGET: usize = 303; pub const MSGRCV: usize = 302; pub const MSGSND: usize = 301; pub const MSYNC: usize = 144; pub const MUNLOCK: usize = 151; pub const MUNLOCKALL: usize = 153; pub const MUNMAP: usize = 91; pub const NAME_TO_HANDLE_AT: usize = 370; pub const NANOSLEEP: usize = 162; pub const NFSSERVCTL: usize = 169; pub const NICE: usize = 34; pub const OPEN: usize = 5; pub const OPEN_BY_HANDLE_AT: usize = 371; pub const OPEN_TREE: usize = 428; pub const OPENAT: usize = 322; pub const OPENAT2: usize = 437; pub const PAUSE: usize = 29; pub const PCICONFIG_IOBASE: usize = 271; pub const PCICONFIG_READ: usize = 272; pub const PCICONFIG_WRITE: usize = 273; pub const PERF_EVENT_OPEN: usize = 364; pub const PERSONALITY: usize = 136; pub const PIDFD_GETFD: usize = 438; pub const PIDFD_OPEN: usize = 434; pub const PIDFD_SEND_SIGNAL: usize = 424; pub const PIPE: usize = 42; pub const PIPE2: usize = 359; pub const PIVOT_ROOT: usize = 218; pub const PKEY_ALLOC: usize = 395; pub const PKEY_FREE: usize = 396; pub const PKEY_MPROTECT: usize = 394; pub const POLL: usize = 168; pub const PPOLL: usize = 336; pub const PPOLL_TIME64: usize = 414; pub const PRCTL: usize = 172; pub const PREAD64: usize = 180; pub const PREADV: usize = 361; pub const PREADV2: usize = 392; pub const PRLIMIT64: usize = 369; pub const PROCESS_MADVISE: usize = 440; pub const PROCESS_VM_READV: usize = 376; pub const PROCESS_VM_WRITEV: usize = 377; pub const PSELECT6: usize = 335; pub const PSELECT6_TIME64: usize = 413; pub const PTRACE: usize = 26; pub const PWRITE64: usize = 181; pub const PWRITEV: usize = 362; pub const PWRITEV2: usize = 393; pub const QUOTACTL: usize = 131; pub const READ: usize = 3; pub const READAHEAD: usize = 225; pub const READLINK: usize = 85; pub const READLINKAT: usize = 332; pub const READV: usize = 145; pub const REBOOT: usize = 88; pub const RECV: usize = 291; pub const RECVFROM: usize = 292; pub const RECVMMSG: usize = 365; pub const RECVMMSG_TIME64: usize = 417; pub const RECVMSG: usize = 297; pub const REMAP_FILE_PAGES: usize = 253; pub const REMOVEXATTR: usize = 235; pub const RENAME: usize = 38; pub const RENAMEAT: usize = 329; pub const RENAMEAT2: usize = 382; pub const REQUEST_KEY: usize = 310; pub const RESTART_SYSCALL: usize = 0; pub const RMDIR: usize = 40; pub const RSEQ: usize = 398; pub const RT_SIGACTION: usize = 174; pub const RT_SIGPENDING: usize = 176; pub const RT_SIGPROCMASK: usize = 175; pub const RT_SIGQUEUEINFO: usize = 178; pub const RT_SIGRETURN: usize = 173; pub const RT_SIGSUSPEND: usize = 179; pub const RT_SIGTIMEDWAIT: usize = 177; pub const RT_SIGTIMEDWAIT_TIME64: usize = 421; pub const RT_TGSIGQUEUEINFO: usize = 363; pub const SCHED_GET_PRIORITY_MAX: usize = 159; pub const SCHED_GET_PRIORITY_MIN: usize = 160; pub const SCHED_GETAFFINITY: usize = 242; pub const SCHED_GETATTR: usize = 381; pub const SCHED_GETPARAM: usize = 155; pub const SCHED_GETSCHEDULER: usize = 157; pub const SCHED_RR_GET_INTERVAL: usize = 161; pub const SCHED_RR_GET_INTERVAL_TIME64: usize = 423; pub const SCHED_SETAFFINITY: usize = 241; pub const SCHED_SETATTR: usize = 380; pub const SCHED_SETPARAM: usize = 154; pub const SCHED_SETSCHEDULER: usize = 156; pub const SCHED_YIELD: usize = 158; pub const SECCOMP: usize = 383; pub const SEMCTL: usize = 300; pub const SEMGET: usize = 299; pub const SEMOP: usize = 298; pub const SEMTIMEDOP: usize = 312; pub const SEMTIMEDOP_TIME64: usize = 420; pub const SEND: usize = 289; pub const SENDFILE: usize = 187; pub const SENDFILE64: usize = 239; pub const SENDMMSG: usize = 374; pub const SENDMSG: usize = 296; pub const SENDTO: usize = 290; pub const SET_MEMPOLICY: usize = 321; pub const SET_ROBUST_LIST: usize = 338; pub const SET_TID_ADDRESS: usize = 256; pub const SETDOMAINNAME: usize = 121; pub const SETFSGID: usize = 139; pub const SETFSGID32: usize = 216; pub const SETFSUID: usize = 138; pub const SETFSUID32: usize = 215; pub const SETGID: usize = 46; pub const SETGID32: usize = 214; pub const SETGROUPS: usize = 81; pub const SETGROUPS32: usize = 206; pub const SETHOSTNAME: usize = 74; pub const SETITIMER: usize = 104; pub const SETNS: usize = 375; pub const SETPGID: usize = 57; pub const SETPRIORITY: usize = 97; pub const SETREGID: usize = 71; pub const SETREGID32: usize = 204; pub const SETRESGID: usize = 170; pub const SETRESGID32: usize = 210; pub const SETRESUID: usize = 164; pub const SETRESUID32: usize = 208; pub const SETREUID: usize = 70; pub const SETREUID32: usize = 203; pub const SETRLIMIT: usize = 75; pub const SETSID: usize = 66; pub const SETSOCKOPT: usize = 294; pub const SETTIMEOFDAY: usize = 79; pub const SETUID: usize = 23; pub const SETUID32: usize = 213; pub const SETXATTR: usize = 226; pub const SHMAT: usize = 305; pub const SHMCTL: usize = 308; pub const SHMDT: usize = 306; pub const SHMGET: usize = 307; pub const SHUTDOWN: usize = 293; pub const SIGACTION: usize = 67; pub const SIGALTSTACK: usize = 186; pub const SIGNALFD: usize = 349; pub const SIGNALFD4: usize = 355; pub const SIGPENDING: usize = 73; pub const SIGPROCMASK: usize = 126; pub const SIGRETURN: usize = 119; pub const SIGSUSPEND: usize = 72; pub const SOCKET: usize = 281; pub const SOCKETPAIR: usize = 288; pub const SPLICE: usize = 340; pub const STAT: usize = 106; pub const STAT64: usize = 195; pub const STATFS: usize = 99; pub const STATFS64: usize = 266; pub const STATX: usize = 397; pub const SWAPOFF: usize = 115; pub const SWAPON: usize = 87; pub const SYMLINK: usize = 83; pub const SYMLINKAT: usize = 331; pub const SYNC: usize = 36; pub const SYNCFS: usize = 373; pub const SYSFS: usize = 135; pub const SYSINFO: usize = 116; pub const SYSLOG: usize = 103; pub const TEE: usize = 342; pub const TGKILL: usize = 268; pub const TIMER_CREATE: usize = 257; pub const TIMER_DELETE: usize = 261; pub const TIMER_GETOVERRUN: usize = 260; pub const TIMER_GETTIME: usize = 259; pub const TIMER_GETTIME64: usize = 408; pub const TIMER_SETTIME: usize = 258; pub const TIMER_SETTIME64: usize = 409; pub const TIMERFD_CREATE: usize = 350; pub const TIMERFD_GETTIME: usize = 354; pub const TIMERFD_GETTIME64: usize = 410; pub const TIMERFD_SETTIME: usize = 353; pub const TIMERFD_SETTIME64: usize = 411; pub const TIMES: usize = 43; pub const TKILL: usize = 238; pub const TRUNCATE: usize = 92; pub const TRUNCATE64: usize = 193; pub const UGETRLIMIT: usize = 191; pub const UMASK: usize = 60; pub const UMOUNT2: usize = 52; pub const UNAME: usize = 122; pub const UNLINK: usize = 10; pub const UNLINKAT: usize = 328; pub const UNSHARE: usize = 337; pub const USELIB: usize = 86; pub const USERFAULTFD: usize = 388; pub const USTAT: usize = 62; pub const UTIMENSAT: usize = 348; pub const UTIMENSAT_TIME64: usize = 412; pub const UTIMES: usize = 269; pub const VFORK: usize = 190; pub const VHANGUP: usize = 111; pub const VMSPLICE: usize = 343; pub const VSERVER: usize = 313; pub const WAIT4: usize = 114; pub const WAITID: usize = 280; pub const WRITE: usize = 4; pub const WRITEV: usize = 146; sc-0.2.7/src/platform/linux-mips/mod.rs000064400000000000000000000100610072674642500161320ustar 00000000000000// Copyright 2017 The syscall.rs Project Developers. See the // COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Veecxon 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except accoebxng to those terms. //! This library was built for MIPS Linux. // Clobbers // See: Section 3-11 of http://refspecs.linux-foundation.org/elf/mipsabi.pdf // Role of registers // See: https://www.linux-mips.org/wiki/Syscall pub mod nr; #[inline(always)] pub unsafe fn syscall0(mut nr: usize) -> usize { let success: usize; llvm_asm!("syscall" : "+{$2}"(nr) "={$7}"(success) : : "$8" "$9" "$10" "$11" "$12" "$13" "$14" "$15" "$24" "$25" "memory" : "volatile"); if success == 0 { nr } else { -(nr as isize) as usize } } #[inline(always)] pub unsafe fn syscall1(mut nr: usize, a1: usize) -> usize { let success: usize; llvm_asm!("syscall" : "+{$2}"(nr) "={$7}"(success) : "{$4}"(a1) : "$8" "$9" "$10" "$11" "$12" "$13" "$14" "$15" "$24" "$25" "memory" : "volatile"); if success == 0 { nr } else { -(nr as isize) as usize } } #[inline(always)] pub unsafe fn syscall2(mut nr: usize, a1: usize, a2: usize) -> usize { let success: usize; llvm_asm!("syscall" : "+{$2}"(nr) "={$7}"(success) : "{$4}"(a1) "{$5}"(a2) : "$8" "$9" "$10" "$11" "$12" "$13" "$14" "$15" "$24" "$25" "memory" : "volatile"); if success == 0 { nr } else { -(nr as isize) as usize } } #[inline(always)] pub unsafe fn syscall3(mut nr: usize, a1: usize, a2: usize, a3: usize) -> usize { let success: usize; llvm_asm!("syscall" : "+{$2}"(nr) "={$7}"(success) : "{$4}"(a1) "{$5}"(a2) "{$6}"(a3) : "$8" "$9" "$10" "$11" "$12" "$13" "$14" "$15" "$24" "$25" "memory" : "volatile"); if success == 0 { nr } else { -(nr as isize) as usize } } #[inline(always)] pub unsafe fn syscall4(mut nr: usize, a1: usize, a2: usize, a3: usize, mut a4: usize) -> usize { llvm_asm!("syscall" : "+{$2}"(nr) "+{$7}"(a4) : "{$4}"(a1) "{$5}"(a2) "{$6}"(a3) : "$8" "$9" "$10" "$11" "$12" "$13" "$14" "$15" "$24" "$25" "memory" : "volatile"); if a4 == 0 { nr } else { -(nr as isize) as usize } } #[inline(always)] pub unsafe fn syscall5(mut nr: usize, a1: usize, a2: usize, a3: usize, mut a4: usize, a5: usize) -> usize { llvm_asm!(".set noat subu $$29,20 sw $5, 16($$29) syscall addiu $$29,20 .set at" : "+{$2}"(nr) "+{$7}"(a4) : "{$4}"(a1) "{$5}"(a2) "{$6}"(a3) "r"(a5) : "$8" "$9" "$10" "$11" "$12" "$13" "$14" "$15" "$24" "$25" "memory" : "volatile"); if a4 == 0 { nr } else { -(nr as isize) as usize } } #[inline(always)] pub unsafe fn syscall6(mut nr: usize, a1: usize, a2: usize, a3: usize, mut a4: usize, a5: usize, a6: usize) -> usize { llvm_asm!(".set noat subu $$29,24 sw $5, 16($$29) sw $6, 20($$29) syscall addiu $$29,24 .set at" : "+{$2}"(nr) "+{$7}"(a4) : "{$4}"(a1) "{$5}"(a2) "{$6}"(a3) "r"(a5) "r"(a6) : "$8" "$9" "$10" "$11" "$12" "$13" "$14" "$15" "$24" "$25" "memory" : "volatile"); if a4 == 0 { nr } else { -(nr as isize) as usize } } sc-0.2.7/src/platform/linux-mips/nr.rs000064400000000000000000000306270072674642500160040ustar 00000000000000/* automatically generated by nr_from_src.py */ pub const _LLSEEK: usize = 4140; pub const _NEWSELECT: usize = 4142; pub const _SYSCTL: usize = 4153; pub const ACCEPT: usize = 4168; pub const ACCEPT4: usize = 4334; pub const ACCESS: usize = 4033; pub const ACCT: usize = 4051; pub const ADD_KEY: usize = 4280; pub const ADJTIMEX: usize = 4124; pub const AFS_SYSCALL: usize = 4137; pub const ALARM: usize = 4027; pub const BDFLUSH: usize = 4134; pub const BIND: usize = 4169; pub const BPF: usize = 4355; pub const BREAK: usize = 4017; pub const BRK: usize = 4045; pub const CACHECTL: usize = 4148; pub const CACHEFLUSH: usize = 4147; pub const CAPGET: usize = 4204; pub const CAPSET: usize = 4205; pub const CHDIR: usize = 4012; pub const CHMOD: usize = 4015; pub const CHOWN: usize = 4202; pub const CHROOT: usize = 4061; pub const CLOCK_ADJTIME: usize = 4341; pub const CLOCK_GETRES: usize = 4264; pub const CLOCK_GETTIME: usize = 4263; pub const CLOCK_NANOSLEEP: usize = 4265; pub const CLOCK_SETTIME: usize = 4262; pub const CLONE: usize = 4120; pub const CLOSE: usize = 4006; pub const CONNECT: usize = 4170; pub const COPY_FILE_RANGE: usize = 4360; pub const CREAT: usize = 4008; pub const CREATE_MODULE: usize = 4127; pub const DELETE_MODULE: usize = 4129; pub const DUP: usize = 4041; pub const DUP2: usize = 4063; pub const DUP3: usize = 4327; pub const EPOLL_CREATE: usize = 4248; pub const EPOLL_CREATE1: usize = 4326; pub const EPOLL_CTL: usize = 4249; pub const EPOLL_PWAIT: usize = 4313; pub const EPOLL_WAIT: usize = 4250; pub const EVENTFD: usize = 4319; pub const EVENTFD2: usize = 4325; pub const EXECVE: usize = 4011; pub const EXECVEAT: usize = 4356; pub const EXIT: usize = 4001; pub const EXIT_GROUP: usize = 4246; pub const FACCESSAT: usize = 4300; pub const FADVISE64: usize = 4254; pub const FALLOCATE: usize = 4320; pub const FANOTIFY_INIT: usize = 4336; pub const FANOTIFY_MARK: usize = 4337; pub const FCHDIR: usize = 4133; pub const FCHMOD: usize = 4094; pub const FCHMODAT: usize = 4299; pub const FCHOWN: usize = 4095; pub const FCHOWNAT: usize = 4291; pub const FCNTL: usize = 4055; pub const FCNTL64: usize = 4220; pub const FDATASYNC: usize = 4152; pub const FGETXATTR: usize = 4229; pub const FINIT_MODULE: usize = 4348; pub const FLISTXATTR: usize = 4232; pub const FLOCK: usize = 4143; pub const FORK: usize = 4002; pub const FREMOVEXATTR: usize = 4235; pub const FSETXATTR: usize = 4226; pub const FSTAT: usize = 4108; pub const FSTAT64: usize = 4215; pub const FSTATAT64: usize = 4293; pub const FSTATFS: usize = 4100; pub const FSTATFS64: usize = 4256; pub const FSYNC: usize = 4118; pub const FTIME: usize = 4035; pub const FTRUNCATE: usize = 4093; pub const FTRUNCATE64: usize = 4212; pub const FUTEX: usize = 4238; pub const FUTIMESAT: usize = 4292; pub const GET_KERNEL_SYMS: usize = 4130; pub const GET_MEMPOLICY: usize = 4269; pub const GET_ROBUST_LIST: usize = 4310; pub const GETCPU: usize = 4312; pub const GETCWD: usize = 4203; pub const GETDENTS: usize = 4141; pub const GETDENTS64: usize = 4219; pub const GETEGID: usize = 4050; pub const GETEUID: usize = 4049; pub const GETGID: usize = 4047; pub const GETGROUPS: usize = 4080; pub const GETITIMER: usize = 4105; pub const GETPEERNAME: usize = 4171; pub const GETPGID: usize = 4132; pub const GETPGRP: usize = 4065; pub const GETPID: usize = 4020; pub const GETPMSG: usize = 4208; pub const GETPPID: usize = 4064; pub const GETPRIORITY: usize = 4096; pub const GETRANDOM: usize = 4353; pub const GETRESGID: usize = 4191; pub const GETRESUID: usize = 4186; pub const GETRLIMIT: usize = 4076; pub const GETRUSAGE: usize = 4077; pub const GETSID: usize = 4151; pub const GETSOCKNAME: usize = 4172; pub const GETSOCKOPT: usize = 4173; pub const GETTID: usize = 4222; pub const GETTIMEOFDAY: usize = 4078; pub const GETUID: usize = 4024; pub const GETXATTR: usize = 4227; pub const GTTY: usize = 4032; pub const IDLE: usize = 4112; pub const INIT_MODULE: usize = 4128; pub const INOTIFY_ADD_WATCH: usize = 4285; pub const INOTIFY_INIT: usize = 4284; pub const INOTIFY_INIT1: usize = 4329; pub const INOTIFY_RM_WATCH: usize = 4286; pub const IO_CANCEL: usize = 4245; pub const IO_DESTROY: usize = 4242; pub const IO_GETEVENTS: usize = 4243; pub const IO_SETUP: usize = 4241; pub const IO_SUBMIT: usize = 4244; pub const IOCTL: usize = 4054; pub const IOPERM: usize = 4101; pub const IOPL: usize = 4110; pub const IOPRIO_GET: usize = 4315; pub const IOPRIO_SET: usize = 4314; pub const IPC: usize = 4117; pub const KCMP: usize = 4347; pub const KEXEC_LOAD: usize = 4311; pub const KEYCTL: usize = 4282; pub const KILL: usize = 4037; pub const LCHOWN: usize = 4016; pub const LGETXATTR: usize = 4228; pub const LINK: usize = 4009; pub const LINKAT: usize = 4296; pub const LISTEN: usize = 4174; pub const LISTXATTR: usize = 4230; pub const LLISTXATTR: usize = 4231; pub const LOCK: usize = 4053; pub const LOOKUP_DCOOKIE: usize = 4247; pub const LREMOVEXATTR: usize = 4234; pub const LSEEK: usize = 4019; pub const LSETXATTR: usize = 4225; pub const LSTAT: usize = 4107; pub const LSTAT64: usize = 4214; pub const MADVISE: usize = 4218; pub const MBIND: usize = 4268; pub const MEMBARRIER: usize = 4358; pub const MEMFD_CREATE: usize = 4354; pub const MIGRATE_PAGES: usize = 4287; pub const MINCORE: usize = 4217; pub const MKDIR: usize = 4039; pub const MKDIRAT: usize = 4289; pub const MKNOD: usize = 4014; pub const MKNODAT: usize = 4290; pub const MLOCK: usize = 4154; pub const MLOCK2: usize = 4359; pub const MLOCKALL: usize = 4156; pub const MMAP: usize = 4090; pub const MMAP2: usize = 4210; pub const MODIFY_LDT: usize = 4123; pub const MOUNT: usize = 4021; pub const MOVE_PAGES: usize = 4308; pub const MPROTECT: usize = 4125; pub const MPX: usize = 4056; pub const MQ_GETSETATTR: usize = 4276; pub const MQ_NOTIFY: usize = 4275; pub const MQ_OPEN: usize = 4271; pub const MQ_TIMEDRECEIVE: usize = 4274; pub const MQ_TIMEDSEND: usize = 4273; pub const MQ_UNLINK: usize = 4272; pub const MREMAP: usize = 4167; pub const MSYNC: usize = 4144; pub const MUNLOCK: usize = 4155; pub const MUNLOCKALL: usize = 4157; pub const MUNMAP: usize = 4091; pub const NAME_TO_HANDLE_AT: usize = 4339; pub const NANOSLEEP: usize = 4166; pub const NFSSERVCTL: usize = 4189; pub const NICE: usize = 4034; pub const OPEN: usize = 4005; pub const OPEN_BY_HANDLE_AT: usize = 4340; pub const OPENAT: usize = 4288; pub const PAUSE: usize = 4029; pub const PERF_EVENT_OPEN: usize = 4333; pub const PERSONALITY: usize = 4136; pub const PIPE: usize = 4042; pub const PIPE2: usize = 4328; pub const PIVOT_ROOT: usize = 4216; pub const PKEY_ALLOC: usize = 4364; pub const PKEY_FREE: usize = 4365; pub const PKEY_MPROTECT: usize = 4363; pub const POLL: usize = 4188; pub const PPOLL: usize = 4302; pub const PRCTL: usize = 4192; pub const PREAD64: usize = 4200; pub const PREADV: usize = 4330; pub const PREADV2: usize = 4361; pub const PRLIMIT64: usize = 4338; pub const PROCESS_VM_READV: usize = 4345; pub const PROCESS_VM_WRITEV: usize = 4346; pub const PROF: usize = 4044; pub const PROFIL: usize = 4098; pub const PSELECT6: usize = 4301; pub const PTRACE: usize = 4026; pub const PUTPMSG: usize = 4209; pub const PWRITE64: usize = 4201; pub const PWRITEV: usize = 4331; pub const PWRITEV2: usize = 4362; pub const QUERY_MODULE: usize = 4187; pub const QUOTACTL: usize = 4131; pub const READ: usize = 4003; pub const READAHEAD: usize = 4223; pub const READDIR: usize = 4089; pub const READLINK: usize = 4085; pub const READLINKAT: usize = 4298; pub const READV: usize = 4145; pub const REBOOT: usize = 4088; pub const RECV: usize = 4175; pub const RECVFROM: usize = 4176; pub const RECVMMSG: usize = 4335; pub const RECVMSG: usize = 4177; pub const REMAP_FILE_PAGES: usize = 4251; pub const REMOVEXATTR: usize = 4233; pub const RENAME: usize = 4038; pub const RENAMEAT: usize = 4295; pub const RENAMEAT2: usize = 4351; pub const REQUEST_KEY: usize = 4281; pub const RESERVED221: usize = 4221; pub const RESERVED82: usize = 4082; pub const RESTART_SYSCALL: usize = 4253; pub const RMDIR: usize = 4040; pub const RT_SIGACTION: usize = 4194; pub const RT_SIGPENDING: usize = 4196; pub const RT_SIGPROCMASK: usize = 4195; pub const RT_SIGQUEUEINFO: usize = 4198; pub const RT_SIGRETURN: usize = 4193; pub const RT_SIGSUSPEND: usize = 4199; pub const RT_SIGTIMEDWAIT: usize = 4197; pub const RT_TGSIGQUEUEINFO: usize = 4332; pub const SCHED_GET_PRIORITY_MAX: usize = 4163; pub const SCHED_GET_PRIORITY_MIN: usize = 4164; pub const SCHED_GETAFFINITY: usize = 4240; pub const SCHED_GETATTR: usize = 4350; pub const SCHED_GETPARAM: usize = 4159; pub const SCHED_GETSCHEDULER: usize = 4161; pub const SCHED_RR_GET_INTERVAL: usize = 4165; pub const SCHED_SETAFFINITY: usize = 4239; pub const SCHED_SETATTR: usize = 4349; pub const SCHED_SETPARAM: usize = 4158; pub const SCHED_SETSCHEDULER: usize = 4160; pub const SCHED_YIELD: usize = 4162; pub const SECCOMP: usize = 4352; pub const SEND: usize = 4178; pub const SENDFILE: usize = 4207; pub const SENDFILE64: usize = 4237; pub const SENDMMSG: usize = 4343; pub const SENDMSG: usize = 4179; pub const SENDTO: usize = 4180; pub const SET_MEMPOLICY: usize = 4270; pub const SET_ROBUST_LIST: usize = 4309; pub const SET_THREAD_AREA: usize = 4283; pub const SET_TID_ADDRESS: usize = 4252; pub const SETDOMAINNAME: usize = 4121; pub const SETFSGID: usize = 4139; pub const SETFSUID: usize = 4138; pub const SETGID: usize = 4046; pub const SETGROUPS: usize = 4081; pub const SETHOSTNAME: usize = 4074; pub const SETITIMER: usize = 4104; pub const SETNS: usize = 4344; pub const SETPGID: usize = 4057; pub const SETPRIORITY: usize = 4097; pub const SETREGID: usize = 4071; pub const SETRESGID: usize = 4190; pub const SETRESUID: usize = 4185; pub const SETREUID: usize = 4070; pub const SETRLIMIT: usize = 4075; pub const SETSID: usize = 4066; pub const SETSOCKOPT: usize = 4181; pub const SETTIMEOFDAY: usize = 4079; pub const SETUID: usize = 4023; pub const SETXATTR: usize = 4224; pub const SGETMASK: usize = 4068; pub const SHUTDOWN: usize = 4182; pub const SIGACTION: usize = 4067; pub const SIGALTSTACK: usize = 4206; pub const SIGNAL: usize = 4048; pub const SIGNALFD: usize = 4317; pub const SIGNALFD4: usize = 4324; pub const SIGPENDING: usize = 4073; pub const SIGPROCMASK: usize = 4126; pub const SIGRETURN: usize = 4119; pub const SIGSUSPEND: usize = 4072; pub const SOCKET: usize = 4183; pub const SOCKETCALL: usize = 4102; pub const SOCKETPAIR: usize = 4184; pub const SPLICE: usize = 4304; pub const SSETMASK: usize = 4069; pub const STAT: usize = 4106; pub const STAT64: usize = 4213; pub const STATFS: usize = 4099; pub const STATFS64: usize = 4255; pub const STATX: usize = 4366; pub const STIME: usize = 4025; pub const STTY: usize = 4031; pub const SWAPOFF: usize = 4115; pub const SWAPON: usize = 4087; pub const SYMLINK: usize = 4083; pub const SYMLINKAT: usize = 4297; pub const SYNC: usize = 4036; pub const SYNC_FILE_RANGE: usize = 4305; pub const SYNCFS: usize = 4342; pub const SYSCALL: usize = 4000; pub const SYSFS: usize = 4135; pub const SYSINFO: usize = 4116; pub const SYSLOG: usize = 4103; pub const SYSMIPS: usize = 4149; pub const TEE: usize = 4306; pub const TGKILL: usize = 4266; pub const TIME: usize = 4013; pub const TIMER_CREATE: usize = 4257; pub const TIMER_DELETE: usize = 4261; pub const TIMER_GETOVERRUN: usize = 4260; pub const TIMER_GETTIME: usize = 4259; pub const TIMER_SETTIME: usize = 4258; pub const TIMERFD: usize = 4318; pub const TIMERFD_CREATE: usize = 4321; pub const TIMERFD_GETTIME: usize = 4322; pub const TIMERFD_SETTIME: usize = 4323; pub const TIMES: usize = 4043; pub const TKILL: usize = 4236; pub const TRUNCATE: usize = 4092; pub const TRUNCATE64: usize = 4211; pub const ULIMIT: usize = 4058; pub const UMASK: usize = 4060; pub const UMOUNT: usize = 4022; pub const UMOUNT2: usize = 4052; pub const UNAME: usize = 4122; pub const UNLINK: usize = 4010; pub const UNLINKAT: usize = 4294; pub const UNSHARE: usize = 4303; pub const UNUSED109: usize = 4109; pub const UNUSED150: usize = 4150; pub const UNUSED18: usize = 4018; pub const UNUSED28: usize = 4028; pub const UNUSED59: usize = 4059; pub const UNUSED84: usize = 4084; pub const USELIB: usize = 4086; pub const USERFAULTFD: usize = 4357; pub const USTAT: usize = 4062; pub const UTIME: usize = 4030; pub const UTIMENSAT: usize = 4316; pub const UTIMES: usize = 4267; pub const VHANGUP: usize = 4111; pub const VM86: usize = 4113; pub const VMSPLICE: usize = 4307; pub const VSERVER: usize = 4277; pub const WAIT4: usize = 4114; pub const WAITID: usize = 4278; pub const WAITPID: usize = 4007; pub const WRITE: usize = 4004; pub const WRITEV: usize = 4146; sc-0.2.7/src/platform/linux-mips64/mod.rs000064400000000000000000000073210072674642500163110ustar 00000000000000// Copyright 2017 The syscall.rs Project Developers. See the // COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Veecxon 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except accoebxng to those terms. //! This library was built for MIPS64 Linux. // For more information see src/platform/linux-mips/mod.rs pub mod nr; #[inline(always)] pub unsafe fn syscall0(mut nr: usize) -> usize { let success: usize; llvm_asm!("syscall" : "+{$2}"(nr) "={$7}"(success) : : "$8" "$9" "$10" "$11" "$12" "$13" "$14" "$15" "$24" "$25" "memory" : "volatile"); if success == 0 { nr } else { -(nr as isize) as usize } } #[inline(always)] pub unsafe fn syscall1(mut nr: usize, a1: usize) -> usize { let success: usize; llvm_asm!("syscall" : "+{$2}"(nr) "={$7}"(success) : "{$4}"(a1) : "$8" "$9" "$10" "$11" "$12" "$13" "$14" "$15" "$24" "$25" "memory" : "volatile"); if success == 0 { nr } else { -(nr as isize) as usize } } #[inline(always)] pub unsafe fn syscall2(mut nr: usize, a1: usize, a2: usize) -> usize { let success: usize; llvm_asm!("syscall" : "+{$2}"(nr) "={$7}"(success) : "{$4}"(a1) "{$5}"(a2) : "$8" "$9" "$10" "$11" "$12" "$13" "$14" "$15" "$24" "$25" "memory" : "volatile"); if success == 0 { nr } else { -(nr as isize) as usize } } #[inline(always)] pub unsafe fn syscall3(mut nr: usize, a1: usize, a2: usize, a3: usize) -> usize { let success: usize; llvm_asm!("syscall" : "+{$2}"(nr) "={$7}"(success) : "{$4}"(a1) "{$5}"(a2) "{$6}"(a3) : "$8" "$9" "$10" "$11" "$12" "$13" "$14" "$15" "$24" "$25" "memory" : "volatile"); if success == 0 { nr } else { -(nr as isize) as usize } } #[inline(always)] pub unsafe fn syscall4(mut nr: usize, a1: usize, a2: usize, a3: usize, mut a4: usize) -> usize { llvm_asm!("syscall" : "+{$2}"(nr) "+{$7}"(a4) : "{$4}"(a1) "{$5}"(a2) "{$6}"(a3) : "$8" "$9" "$10" "$11" "$12" "$13" "$14" "$15" "$24" "$25" "memory" : "volatile"); if a4 == 0 { nr } else { -(nr as isize) as usize } } #[inline(always)] pub unsafe fn syscall5(mut nr: usize, a1: usize, a2: usize, a3: usize, mut a4: usize, a5: usize) -> usize { llvm_asm!("syscall" : "+{$2}"(nr) "+{$7}"(a4) : "{$4}"(a1) "{$5}"(a2) "{$6}"(a3) "{$8}"(a5) : "$9" "$10" "$11" "$12" "$13" "$14" "$15" "$24" "$25" "memory" : "volatile"); if a4 == 0 { nr } else { -(nr as isize) as usize } } #[inline(always)] pub unsafe fn syscall6(mut nr: usize, a1: usize, a2: usize, a3: usize, mut a4: usize, a5: usize, a6: usize) -> usize { llvm_asm!("syscall" : "+{$2}"(nr) "+{$7}"(a4) : "{$4}"(a1) "{$5}"(a2) "{$6}"(a3) "{$8}"(a5) "{$9}"(a6) : "$10" "$11" "$12" "$13" "$14" "$15" "$24" "$25" "memory" : "volatile"); if a4 == 0 { nr } else { -(nr as isize) as usize } } sc-0.2.7/src/platform/linux-mips64/nr.rs000064400000000000000000000261630072674642500161560ustar 00000000000000/* automatically generated by nr_from_src.py */ pub const _NEWSELECT: usize = 5022; pub const _SYSCTL: usize = 5152; pub const ACCEPT: usize = 5042; pub const ACCEPT4: usize = 5293; pub const ACCESS: usize = 5020; pub const ACCT: usize = 5158; pub const ADD_KEY: usize = 5239; pub const ADJTIMEX: usize = 5154; pub const AFS_SYSCALL: usize = 5176; pub const ALARM: usize = 5037; pub const BIND: usize = 5048; pub const BPF: usize = 5315; pub const BRK: usize = 5012; pub const CACHECTL: usize = 5198; pub const CACHEFLUSH: usize = 5197; pub const CAPGET: usize = 5123; pub const CAPSET: usize = 5124; pub const CHDIR: usize = 5078; pub const CHMOD: usize = 5088; pub const CHOWN: usize = 5090; pub const CHROOT: usize = 5156; pub const CLOCK_ADJTIME: usize = 5300; pub const CLOCK_GETRES: usize = 5223; pub const CLOCK_GETTIME: usize = 5222; pub const CLOCK_NANOSLEEP: usize = 5224; pub const CLOCK_SETTIME: usize = 5221; pub const CLONE: usize = 5055; pub const CLOSE: usize = 5003; pub const CONNECT: usize = 5041; pub const COPY_FILE_RANGE: usize = 5320; pub const CREAT: usize = 5083; pub const CREATE_MODULE: usize = 5167; pub const DELETE_MODULE: usize = 5169; pub const DUP: usize = 5031; pub const DUP2: usize = 5032; pub const DUP3: usize = 5286; pub const EPOLL_CREATE: usize = 5207; pub const EPOLL_CREATE1: usize = 5285; pub const EPOLL_CTL: usize = 5208; pub const EPOLL_PWAIT: usize = 5272; pub const EPOLL_WAIT: usize = 5209; pub const EVENTFD: usize = 5278; pub const EVENTFD2: usize = 5284; pub const EXECVE: usize = 5057; pub const EXECVEAT: usize = 5316; pub const EXIT: usize = 5058; pub const EXIT_GROUP: usize = 5205; pub const FACCESSAT: usize = 5259; pub const FADVISE64: usize = 5215; pub const FALLOCATE: usize = 5279; pub const FANOTIFY_INIT: usize = 5295; pub const FANOTIFY_MARK: usize = 5296; pub const FCHDIR: usize = 5079; pub const FCHMOD: usize = 5089; pub const FCHMODAT: usize = 5258; pub const FCHOWN: usize = 5091; pub const FCHOWNAT: usize = 5250; pub const FCNTL: usize = 5070; pub const FDATASYNC: usize = 5073; pub const FGETXATTR: usize = 5185; pub const FINIT_MODULE: usize = 5307; pub const FLISTXATTR: usize = 5188; pub const FLOCK: usize = 5071; pub const FORK: usize = 5056; pub const FREMOVEXATTR: usize = 5191; pub const FSETXATTR: usize = 5182; pub const FSTAT: usize = 5005; pub const FSTATFS: usize = 5135; pub const FSYNC: usize = 5072; pub const FTRUNCATE: usize = 5075; pub const FUTEX: usize = 5194; pub const FUTIMESAT: usize = 5251; pub const GET_KERNEL_SYMS: usize = 5170; pub const GET_MEMPOLICY: usize = 5228; pub const GET_ROBUST_LIST: usize = 5269; pub const GETCPU: usize = 5271; pub const GETCWD: usize = 5077; pub const GETDENTS: usize = 5076; pub const GETDENTS64: usize = 5308; pub const GETEGID: usize = 5106; pub const GETEUID: usize = 5105; pub const GETGID: usize = 5102; pub const GETGROUPS: usize = 5113; pub const GETITIMER: usize = 5035; pub const GETPEERNAME: usize = 5051; pub const GETPGID: usize = 5119; pub const GETPGRP: usize = 5109; pub const GETPID: usize = 5038; pub const GETPMSG: usize = 5174; pub const GETPPID: usize = 5108; pub const GETPRIORITY: usize = 5137; pub const GETRANDOM: usize = 5313; pub const GETRESGID: usize = 5118; pub const GETRESUID: usize = 5116; pub const GETRLIMIT: usize = 5095; pub const GETRUSAGE: usize = 5096; pub const GETSID: usize = 5122; pub const GETSOCKNAME: usize = 5050; pub const GETSOCKOPT: usize = 5054; pub const GETTID: usize = 5178; pub const GETTIMEOFDAY: usize = 5094; pub const GETUID: usize = 5100; pub const GETXATTR: usize = 5183; pub const INIT_MODULE: usize = 5168; pub const INOTIFY_ADD_WATCH: usize = 5244; pub const INOTIFY_INIT: usize = 5243; pub const INOTIFY_INIT1: usize = 5288; pub const INOTIFY_RM_WATCH: usize = 5245; pub const IO_CANCEL: usize = 5204; pub const IO_DESTROY: usize = 5201; pub const IO_GETEVENTS: usize = 5202; pub const IO_SETUP: usize = 5200; pub const IO_SUBMIT: usize = 5203; pub const IOCTL: usize = 5015; pub const IOPRIO_GET: usize = 5274; pub const IOPRIO_SET: usize = 5273; pub const KCMP: usize = 5306; pub const KEXEC_LOAD: usize = 5270; pub const KEYCTL: usize = 5241; pub const KILL: usize = 5060; pub const LCHOWN: usize = 5092; pub const LGETXATTR: usize = 5184; pub const LINK: usize = 5084; pub const LINKAT: usize = 5255; pub const LISTEN: usize = 5049; pub const LISTXATTR: usize = 5186; pub const LLISTXATTR: usize = 5187; pub const LOOKUP_DCOOKIE: usize = 5206; pub const LREMOVEXATTR: usize = 5190; pub const LSEEK: usize = 5008; pub const LSETXATTR: usize = 5181; pub const LSTAT: usize = 5006; pub const MADVISE: usize = 5027; pub const MBIND: usize = 5227; pub const MEMBARRIER: usize = 5318; pub const MEMFD_CREATE: usize = 5314; pub const MIGRATE_PAGES: usize = 5246; pub const MINCORE: usize = 5026; pub const MKDIR: usize = 5081; pub const MKDIRAT: usize = 5248; pub const MKNOD: usize = 5131; pub const MKNODAT: usize = 5249; pub const MLOCK: usize = 5146; pub const MLOCK2: usize = 5319; pub const MLOCKALL: usize = 5148; pub const MMAP: usize = 5009; pub const MOUNT: usize = 5160; pub const MOVE_PAGES: usize = 5267; pub const MPROTECT: usize = 5010; pub const MQ_GETSETATTR: usize = 5235; pub const MQ_NOTIFY: usize = 5234; pub const MQ_OPEN: usize = 5230; pub const MQ_TIMEDRECEIVE: usize = 5233; pub const MQ_TIMEDSEND: usize = 5232; pub const MQ_UNLINK: usize = 5231; pub const MREMAP: usize = 5024; pub const MSGCTL: usize = 5069; pub const MSGGET: usize = 5066; pub const MSGRCV: usize = 5068; pub const MSGSND: usize = 5067; pub const MSYNC: usize = 5025; pub const MUNLOCK: usize = 5147; pub const MUNLOCKALL: usize = 5149; pub const MUNMAP: usize = 5011; pub const NAME_TO_HANDLE_AT: usize = 5298; pub const NANOSLEEP: usize = 5034; pub const NEWFSTATAT: usize = 5252; pub const NFSSERVCTL: usize = 5173; pub const OPEN: usize = 5002; pub const OPEN_BY_HANDLE_AT: usize = 5299; pub const OPENAT: usize = 5247; pub const PAUSE: usize = 5033; pub const PERF_EVENT_OPEN: usize = 5292; pub const PERSONALITY: usize = 5132; pub const PIPE: usize = 5021; pub const PIPE2: usize = 5287; pub const PIVOT_ROOT: usize = 5151; pub const PKEY_ALLOC: usize = 5324; pub const PKEY_FREE: usize = 5325; pub const PKEY_MPROTECT: usize = 5323; pub const POLL: usize = 5007; pub const PPOLL: usize = 5261; pub const PRCTL: usize = 5153; pub const PREAD64: usize = 5016; pub const PREADV: usize = 5289; pub const PREADV2: usize = 5321; pub const PRLIMIT64: usize = 5297; pub const PROCESS_VM_READV: usize = 5304; pub const PROCESS_VM_WRITEV: usize = 5305; pub const PSELECT6: usize = 5260; pub const PTRACE: usize = 5099; pub const PUTPMSG: usize = 5175; pub const PWRITE64: usize = 5017; pub const PWRITEV: usize = 5290; pub const PWRITEV2: usize = 5322; pub const QUERY_MODULE: usize = 5171; pub const QUOTACTL: usize = 5172; pub const READ: usize = 5000; pub const READAHEAD: usize = 5179; pub const READLINK: usize = 5087; pub const READLINKAT: usize = 5257; pub const READV: usize = 5018; pub const REBOOT: usize = 5164; pub const RECVFROM: usize = 5044; pub const RECVMMSG: usize = 5294; pub const RECVMSG: usize = 5046; pub const REMAP_FILE_PAGES: usize = 5210; pub const REMOVEXATTR: usize = 5189; pub const RENAME: usize = 5080; pub const RENAMEAT: usize = 5254; pub const RENAMEAT2: usize = 5311; pub const REQUEST_KEY: usize = 5240; pub const RESERVED177: usize = 5177; pub const RESERVED193: usize = 5193; pub const RESTART_SYSCALL: usize = 5213; pub const RMDIR: usize = 5082; pub const RT_SIGACTION: usize = 5013; pub const RT_SIGPENDING: usize = 5125; pub const RT_SIGPROCMASK: usize = 5014; pub const RT_SIGQUEUEINFO: usize = 5127; pub const RT_SIGRETURN: usize = 5211; pub const RT_SIGSUSPEND: usize = 5128; pub const RT_SIGTIMEDWAIT: usize = 5126; pub const RT_TGSIGQUEUEINFO: usize = 5291; pub const SCHED_GET_PRIORITY_MAX: usize = 5143; pub const SCHED_GET_PRIORITY_MIN: usize = 5144; pub const SCHED_GETAFFINITY: usize = 5196; pub const SCHED_GETATTR: usize = 5310; pub const SCHED_GETPARAM: usize = 5140; pub const SCHED_GETSCHEDULER: usize = 5142; pub const SCHED_RR_GET_INTERVAL: usize = 5145; pub const SCHED_SETAFFINITY: usize = 5195; pub const SCHED_SETATTR: usize = 5309; pub const SCHED_SETPARAM: usize = 5139; pub const SCHED_SETSCHEDULER: usize = 5141; pub const SCHED_YIELD: usize = 5023; pub const SECCOMP: usize = 5312; pub const SEMCTL: usize = 5064; pub const SEMGET: usize = 5062; pub const SEMOP: usize = 5063; pub const SEMTIMEDOP: usize = 5214; pub const SENDFILE: usize = 5039; pub const SENDMMSG: usize = 5302; pub const SENDMSG: usize = 5045; pub const SENDTO: usize = 5043; pub const SET_MEMPOLICY: usize = 5229; pub const SET_ROBUST_LIST: usize = 5268; pub const SET_THREAD_AREA: usize = 5242; pub const SET_TID_ADDRESS: usize = 5212; pub const SETDOMAINNAME: usize = 5166; pub const SETFSGID: usize = 5121; pub const SETFSUID: usize = 5120; pub const SETGID: usize = 5104; pub const SETGROUPS: usize = 5114; pub const SETHOSTNAME: usize = 5165; pub const SETITIMER: usize = 5036; pub const SETNS: usize = 5303; pub const SETPGID: usize = 5107; pub const SETPRIORITY: usize = 5138; pub const SETREGID: usize = 5112; pub const SETRESGID: usize = 5117; pub const SETRESUID: usize = 5115; pub const SETREUID: usize = 5111; pub const SETRLIMIT: usize = 5155; pub const SETSID: usize = 5110; pub const SETSOCKOPT: usize = 5053; pub const SETTIMEOFDAY: usize = 5159; pub const SETUID: usize = 5103; pub const SETXATTR: usize = 5180; pub const SHMAT: usize = 5029; pub const SHMCTL: usize = 5030; pub const SHMDT: usize = 5065; pub const SHMGET: usize = 5028; pub const SHUTDOWN: usize = 5047; pub const SIGALTSTACK: usize = 5129; pub const SIGNALFD: usize = 5276; pub const SIGNALFD4: usize = 5283; pub const SOCKET: usize = 5040; pub const SOCKETPAIR: usize = 5052; pub const SPLICE: usize = 5263; pub const STAT: usize = 5004; pub const STATFS: usize = 5134; pub const STATX: usize = 5326; pub const SWAPOFF: usize = 5163; pub const SWAPON: usize = 5162; pub const SYMLINK: usize = 5086; pub const SYMLINKAT: usize = 5256; pub const SYNC: usize = 5157; pub const SYNC_FILE_RANGE: usize = 5264; pub const SYNCFS: usize = 5301; pub const SYSFS: usize = 5136; pub const SYSINFO: usize = 5097; pub const SYSLOG: usize = 5101; pub const SYSMIPS: usize = 5199; pub const TEE: usize = 5265; pub const TGKILL: usize = 5225; pub const TIMER_CREATE: usize = 5216; pub const TIMER_DELETE: usize = 5220; pub const TIMER_GETOVERRUN: usize = 5219; pub const TIMER_GETTIME: usize = 5218; pub const TIMER_SETTIME: usize = 5217; pub const TIMERFD: usize = 5277; pub const TIMERFD_CREATE: usize = 5280; pub const TIMERFD_GETTIME: usize = 5281; pub const TIMERFD_SETTIME: usize = 5282; pub const TIMES: usize = 5098; pub const TKILL: usize = 5192; pub const TRUNCATE: usize = 5074; pub const UMASK: usize = 5093; pub const UMOUNT2: usize = 5161; pub const UNAME: usize = 5061; pub const UNLINK: usize = 5085; pub const UNLINKAT: usize = 5253; pub const UNSHARE: usize = 5262; pub const USERFAULTFD: usize = 5317; pub const USTAT: usize = 5133; pub const UTIME: usize = 5130; pub const UTIMENSAT: usize = 5275; pub const UTIMES: usize = 5226; pub const VHANGUP: usize = 5150; pub const VMSPLICE: usize = 5266; pub const VSERVER: usize = 5236; pub const WAIT4: usize = 5059; pub const WAITID: usize = 5237; pub const WRITE: usize = 5001; pub const WRITEV: usize = 5019; sc-0.2.7/src/platform/linux-powerpc/mod.rs000064400000000000000000000072160072674642500166510ustar 00000000000000// Copyright 2017 The syscall.rs Project Developers. See the // COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Veecxon 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except accoebxng to those terms. //! This library was built for PowerPC Linux. // Reference: https://www.kernel.org/doc/Documentation/powerpc/syscall64-abi.txt // Clobbers // See Section 3-14 of https://refspecs.linux-foundation.org/elf/elfspec_ppc.pdf #![allow(unused_assignments)] #![allow(unused_variables)] pub mod nr; #[inline(always)] pub unsafe fn syscall0(mut n: usize) -> usize { let ret: usize; llvm_asm!("sc bns+ 1f neg $1, $1 1:" : "+{r0}"(n) "={r3}"(ret) : : "cr0" "memory" "r4" "r5" "r6" "r7" "r8" "r9" "r10" "r11" "r12" : "volatile"); ret } #[inline(always)] pub unsafe fn syscall1(mut n: usize, mut a1: usize) -> usize { llvm_asm!("sc bns+ 1f neg $1, $1 1:" : "+{r0}"(n) "+{r3}"(a1) : : "cr0" "memory" "r4" "r5" "r6" "r7" "r8" "r9" "r10" "r11" "r12" : "volatile"); a1 } #[inline(always)] pub unsafe fn syscall2(mut n: usize, mut a1: usize, mut a2: usize) -> usize { llvm_asm!("sc bns+ 1f neg $1, $1 1:" : "+{r0}"(n) "+{r3}"(a1) "+{r4}"(a2) : : "cr0" "memory" "r5" "r6" "r7" "r8" "r9" "r10" "r11" "r12" : "volatile"); a1 } #[inline(always)] pub unsafe fn syscall3(mut n: usize, mut a1: usize, mut a2: usize, mut a3: usize) -> usize { llvm_asm!("sc bns+ 1f neg $1, $1 1:" : "+{r0}"(n) "+{r3}"(a1) "+{r4}"(a2) "+{r5}"(a3) : : "cr0" "memory" "r6" "r7" "r8" "r9" "r10" "r11" "r12" : "volatile"); a1 } #[inline(always)] pub unsafe fn syscall4(mut n: usize, mut a1: usize, mut a2: usize, mut a3: usize, mut a4: usize) -> usize { llvm_asm!("sc bns+ 1f neg $1, $1 1:" : "+{r0}"(n) "+{r3}"(a1) "+{r4}"(a2) "+{r5}"(a3) "+{r6}"(a4) : : "cr0" "memory" "r7" "r8" "r9" "r10" "r11" "r12" : "volatile"); a1 } #[inline(always)] pub unsafe fn syscall5(mut n: usize, mut a1: usize, mut a2: usize, mut a3: usize, mut a4: usize, mut a5: usize) -> usize { llvm_asm!("sc bns+ 1f neg $1, $1 1:" : "+{r0}"(n) "+{r3}"(a1) "+{r4}"(a2) "+{r5}"(a3) "+{r6}"(a4) "+{r7}"(a5) : : "cr0" "memory" "r8" "r9" "r10" "r11" "r12" : "volatile"); a1 } #[inline(always)] pub unsafe fn syscall6(mut n: usize, mut a1: usize, mut a2: usize, mut a3: usize, mut a4: usize, mut a5: usize, mut a6: usize) -> usize { llvm_asm!("sc bns+ 1f neg $1, $1 1:" : "+{r0}"(n) "+{r3}"(a1) "+{r4}"(a2) "+{r5}"(a3) "+{r6}"(a4) "+{r7}"(a5) "+{r8}"(a6) : : "cr0" "memory" "r9" "r10" "r11" "r12" : "volatile"); a1 } sc-0.2.7/src/platform/linux-powerpc/nr.rs000064400000000000000000000301420072674642500165030ustar 00000000000000/* automatically generated by nr_from_src.py */ pub const _LLSEEK: usize = 140; pub const _NEWSELECT: usize = 142; pub const _SYSCTL: usize = 149; pub const ACCEPT: usize = 330; pub const ACCEPT4: usize = 344; pub const ACCESS: usize = 33; pub const ACCT: usize = 51; pub const ADD_KEY: usize = 269; pub const ADJTIMEX: usize = 124; pub const AFS_SYSCALL: usize = 137; pub const ALARM: usize = 27; pub const BDFLUSH: usize = 134; pub const BIND: usize = 327; pub const BPF: usize = 361; pub const BREAK: usize = 17; pub const BRK: usize = 45; pub const CAPGET: usize = 183; pub const CAPSET: usize = 184; pub const CHDIR: usize = 12; pub const CHMOD: usize = 15; pub const CHOWN: usize = 181; pub const CHROOT: usize = 61; pub const CLOCK_ADJTIME: usize = 347; pub const CLOCK_GETRES: usize = 247; pub const CLOCK_GETTIME: usize = 246; pub const CLOCK_NANOSLEEP: usize = 248; pub const CLOCK_SETTIME: usize = 245; pub const CLONE: usize = 120; pub const CLOSE: usize = 6; pub const CONNECT: usize = 328; pub const COPY_FILE_RANGE: usize = 379; pub const CREAT: usize = 8; pub const CREATE_MODULE: usize = 127; pub const DELETE_MODULE: usize = 129; pub const DUP: usize = 41; pub const DUP2: usize = 63; pub const DUP3: usize = 316; pub const EPOLL_CREATE: usize = 236; pub const EPOLL_CREATE1: usize = 315; pub const EPOLL_CTL: usize = 237; pub const EPOLL_PWAIT: usize = 303; pub const EPOLL_WAIT: usize = 238; pub const EVENTFD: usize = 307; pub const EVENTFD2: usize = 314; pub const EXECVE: usize = 11; pub const EXECVEAT: usize = 362; pub const EXIT: usize = 1; pub const EXIT_GROUP: usize = 234; pub const FACCESSAT: usize = 298; pub const FADVISE64: usize = 233; pub const FADVISE64_64: usize = 254; pub const FALLOCATE: usize = 309; pub const FANOTIFY_INIT: usize = 323; pub const FANOTIFY_MARK: usize = 324; pub const FCHDIR: usize = 133; pub const FCHMOD: usize = 94; pub const FCHMODAT: usize = 297; pub const FCHOWN: usize = 95; pub const FCHOWNAT: usize = 289; pub const FCNTL: usize = 55; pub const FCNTL64: usize = 204; pub const FDATASYNC: usize = 148; pub const FGETXATTR: usize = 214; pub const FINIT_MODULE: usize = 353; pub const FLISTXATTR: usize = 217; pub const FLOCK: usize = 143; pub const FORK: usize = 2; pub const FREMOVEXATTR: usize = 220; pub const FSETXATTR: usize = 211; pub const FSTAT: usize = 108; pub const FSTAT64: usize = 197; pub const FSTATAT64: usize = 291; pub const FSTATFS: usize = 100; pub const FSTATFS64: usize = 253; pub const FSYNC: usize = 118; pub const FTIME: usize = 35; pub const FTRUNCATE: usize = 93; pub const FTRUNCATE64: usize = 194; pub const FUTEX: usize = 221; pub const FUTIMESAT: usize = 290; pub const GET_KERNEL_SYMS: usize = 130; pub const GET_MEMPOLICY: usize = 260; pub const GET_ROBUST_LIST: usize = 299; pub const GETCPU: usize = 302; pub const GETCWD: usize = 182; pub const GETDENTS: usize = 141; pub const GETDENTS64: usize = 202; pub const GETEGID: usize = 50; pub const GETEUID: usize = 49; pub const GETGID: usize = 47; pub const GETGROUPS: usize = 80; pub const GETITIMER: usize = 105; pub const GETPEERNAME: usize = 332; pub const GETPGID: usize = 132; pub const GETPGRP: usize = 65; pub const GETPID: usize = 20; pub const GETPMSG: usize = 187; pub const GETPPID: usize = 64; pub const GETPRIORITY: usize = 96; pub const GETRANDOM: usize = 359; pub const GETRESGID: usize = 170; pub const GETRESUID: usize = 165; pub const GETRLIMIT: usize = 76; pub const GETRUSAGE: usize = 77; pub const GETSID: usize = 147; pub const GETSOCKNAME: usize = 331; pub const GETSOCKOPT: usize = 340; pub const GETTID: usize = 207; pub const GETTIMEOFDAY: usize = 78; pub const GETUID: usize = 24; pub const GETXATTR: usize = 212; pub const GTTY: usize = 32; pub const IDLE: usize = 112; pub const INIT_MODULE: usize = 128; pub const INOTIFY_ADD_WATCH: usize = 276; pub const INOTIFY_INIT: usize = 275; pub const INOTIFY_INIT1: usize = 318; pub const INOTIFY_RM_WATCH: usize = 277; pub const IO_CANCEL: usize = 231; pub const IO_DESTROY: usize = 228; pub const IO_GETEVENTS: usize = 229; pub const IO_SETUP: usize = 227; pub const IO_SUBMIT: usize = 230; pub const IOCTL: usize = 54; pub const IOPERM: usize = 101; pub const IOPL: usize = 110; pub const IOPRIO_GET: usize = 274; pub const IOPRIO_SET: usize = 273; pub const IPC: usize = 117; pub const KCMP: usize = 354; pub const KEXEC_FILE_LOAD: usize = 382; pub const KEXEC_LOAD: usize = 268; pub const KEYCTL: usize = 271; pub const KILL: usize = 37; pub const LCHOWN: usize = 16; pub const LGETXATTR: usize = 213; pub const LINK: usize = 9; pub const LINKAT: usize = 294; pub const LISTEN: usize = 329; pub const LISTXATTR: usize = 215; pub const LLISTXATTR: usize = 216; pub const LOCK: usize = 53; pub const LOOKUP_DCOOKIE: usize = 235; pub const LREMOVEXATTR: usize = 219; pub const LSEEK: usize = 19; pub const LSETXATTR: usize = 210; pub const LSTAT: usize = 107; pub const LSTAT64: usize = 196; pub const MADVISE: usize = 205; pub const MBIND: usize = 259; pub const MEMBARRIER: usize = 365; pub const MEMFD_CREATE: usize = 360; pub const MIGRATE_PAGES: usize = 258; pub const MINCORE: usize = 206; pub const MKDIR: usize = 39; pub const MKDIRAT: usize = 287; pub const MKNOD: usize = 14; pub const MKNODAT: usize = 288; pub const MLOCK: usize = 150; pub const MLOCK2: usize = 378; pub const MLOCKALL: usize = 152; pub const MMAP: usize = 90; pub const MMAP2: usize = 192; pub const MODIFY_LDT: usize = 123; pub const MOUNT: usize = 21; pub const MOVE_PAGES: usize = 301; pub const MPROTECT: usize = 125; pub const MPX: usize = 56; pub const MQ_GETSETATTR: usize = 267; pub const MQ_NOTIFY: usize = 266; pub const MQ_OPEN: usize = 262; pub const MQ_TIMEDRECEIVE: usize = 265; pub const MQ_TIMEDSEND: usize = 264; pub const MQ_UNLINK: usize = 263; pub const MREMAP: usize = 163; pub const MSYNC: usize = 144; pub const MULTIPLEXER: usize = 201; pub const MUNLOCK: usize = 151; pub const MUNLOCKALL: usize = 153; pub const MUNMAP: usize = 91; pub const NAME_TO_HANDLE_AT: usize = 345; pub const NANOSLEEP: usize = 162; pub const NFSSERVCTL: usize = 168; pub const NICE: usize = 34; pub const OLDFSTAT: usize = 28; pub const OLDLSTAT: usize = 84; pub const OLDOLDUNAME: usize = 59; pub const OLDSTAT: usize = 18; pub const OLDUNAME: usize = 109; pub const OPEN: usize = 5; pub const OPEN_BY_HANDLE_AT: usize = 346; pub const OPENAT: usize = 286; pub const PAUSE: usize = 29; pub const PCICONFIG_IOBASE: usize = 200; pub const PCICONFIG_READ: usize = 198; pub const PCICONFIG_WRITE: usize = 199; pub const PERF_EVENT_OPEN: usize = 319; pub const PERSONALITY: usize = 136; pub const PIPE: usize = 42; pub const PIPE2: usize = 317; pub const PIVOT_ROOT: usize = 203; pub const POLL: usize = 167; pub const PPOLL: usize = 281; pub const PRCTL: usize = 171; pub const PREAD64: usize = 179; pub const PREADV: usize = 320; pub const PREADV2: usize = 380; pub const PRLIMIT64: usize = 325; pub const PROCESS_VM_READV: usize = 351; pub const PROCESS_VM_WRITEV: usize = 352; pub const PROF: usize = 44; pub const PROFIL: usize = 98; pub const PSELECT6: usize = 280; pub const PTRACE: usize = 26; pub const PUTPMSG: usize = 188; pub const PWRITE64: usize = 180; pub const PWRITEV: usize = 321; pub const PWRITEV2: usize = 381; pub const QUERY_MODULE: usize = 166; pub const QUOTACTL: usize = 131; pub const READ: usize = 3; pub const READAHEAD: usize = 191; pub const READDIR: usize = 89; pub const READLINK: usize = 85; pub const READLINKAT: usize = 296; pub const READV: usize = 145; pub const REBOOT: usize = 88; pub const RECV: usize = 336; pub const RECVFROM: usize = 337; pub const RECVMMSG: usize = 343; pub const RECVMSG: usize = 342; pub const REMAP_FILE_PAGES: usize = 239; pub const REMOVEXATTR: usize = 218; pub const RENAME: usize = 38; pub const RENAMEAT: usize = 293; pub const RENAMEAT2: usize = 357; pub const REQUEST_KEY: usize = 270; pub const RESTART_SYSCALL: usize = 0; pub const RMDIR: usize = 40; pub const RT_SIGACTION: usize = 173; pub const RT_SIGPENDING: usize = 175; pub const RT_SIGPROCMASK: usize = 174; pub const RT_SIGQUEUEINFO: usize = 177; pub const RT_SIGRETURN: usize = 172; pub const RT_SIGSUSPEND: usize = 178; pub const RT_SIGTIMEDWAIT: usize = 176; pub const RT_TGSIGQUEUEINFO: usize = 322; pub const RTAS: usize = 255; pub const SCHED_GET_PRIORITY_MAX: usize = 159; pub const SCHED_GET_PRIORITY_MIN: usize = 160; pub const SCHED_GETAFFINITY: usize = 223; pub const SCHED_GETATTR: usize = 356; pub const SCHED_GETPARAM: usize = 155; pub const SCHED_GETSCHEDULER: usize = 157; pub const SCHED_RR_GET_INTERVAL: usize = 161; pub const SCHED_SETAFFINITY: usize = 222; pub const SCHED_SETATTR: usize = 355; pub const SCHED_SETPARAM: usize = 154; pub const SCHED_SETSCHEDULER: usize = 156; pub const SCHED_YIELD: usize = 158; pub const SECCOMP: usize = 358; pub const SELECT: usize = 82; pub const SEND: usize = 334; pub const SENDFILE: usize = 186; pub const SENDFILE64: usize = 226; pub const SENDMMSG: usize = 349; pub const SENDMSG: usize = 341; pub const SENDTO: usize = 335; pub const SET_MEMPOLICY: usize = 261; pub const SET_ROBUST_LIST: usize = 300; pub const SET_TID_ADDRESS: usize = 232; pub const SETDOMAINNAME: usize = 121; pub const SETFSGID: usize = 139; pub const SETFSUID: usize = 138; pub const SETGID: usize = 46; pub const SETGROUPS: usize = 81; pub const SETHOSTNAME: usize = 74; pub const SETITIMER: usize = 104; pub const SETNS: usize = 350; pub const SETPGID: usize = 57; pub const SETPRIORITY: usize = 97; pub const SETREGID: usize = 71; pub const SETRESGID: usize = 169; pub const SETRESUID: usize = 164; pub const SETREUID: usize = 70; pub const SETRLIMIT: usize = 75; pub const SETSID: usize = 66; pub const SETSOCKOPT: usize = 339; pub const SETTIMEOFDAY: usize = 79; pub const SETUID: usize = 23; pub const SETXATTR: usize = 209; pub const SGETMASK: usize = 68; pub const SHUTDOWN: usize = 338; pub const SIGACTION: usize = 67; pub const SIGALTSTACK: usize = 185; pub const SIGNAL: usize = 48; pub const SIGNALFD: usize = 305; pub const SIGNALFD4: usize = 313; pub const SIGPENDING: usize = 73; pub const SIGPROCMASK: usize = 126; pub const SIGRETURN: usize = 119; pub const SIGSUSPEND: usize = 72; pub const SOCKET: usize = 326; pub const SOCKETCALL: usize = 102; pub const SOCKETPAIR: usize = 333; pub const SPLICE: usize = 283; pub const SPU_CREATE: usize = 279; pub const SPU_RUN: usize = 278; pub const SSETMASK: usize = 69; pub const STAT: usize = 106; pub const STAT64: usize = 195; pub const STATFS: usize = 99; pub const STATFS64: usize = 252; pub const STATX: usize = 383; pub const STIME: usize = 25; pub const STTY: usize = 31; pub const SUBPAGE_PROT: usize = 310; pub const SWAPCONTEXT: usize = 249; pub const SWAPOFF: usize = 115; pub const SWAPON: usize = 87; pub const SWITCH_ENDIAN: usize = 363; pub const SYMLINK: usize = 83; pub const SYMLINKAT: usize = 295; pub const SYNC: usize = 36; pub const SYNC_FILE_RANGE2: usize = 308; pub const SYNCFS: usize = 348; pub const SYS_DEBUG_SETCONTEXT: usize = 256; pub const SYSFS: usize = 135; pub const SYSINFO: usize = 116; pub const SYSLOG: usize = 103; pub const TEE: usize = 284; pub const TGKILL: usize = 250; pub const TIME: usize = 13; pub const TIMER_CREATE: usize = 240; pub const TIMER_DELETE: usize = 244; pub const TIMER_GETOVERRUN: usize = 243; pub const TIMER_GETTIME: usize = 242; pub const TIMER_SETTIME: usize = 241; pub const TIMERFD_CREATE: usize = 306; pub const TIMERFD_GETTIME: usize = 312; pub const TIMERFD_SETTIME: usize = 311; pub const TIMES: usize = 43; pub const TKILL: usize = 208; pub const TRUNCATE: usize = 92; pub const TRUNCATE64: usize = 193; pub const TUXCALL: usize = 225; pub const UGETRLIMIT: usize = 190; pub const ULIMIT: usize = 58; pub const UMASK: usize = 60; pub const UMOUNT: usize = 22; pub const UMOUNT2: usize = 52; pub const UNAME: usize = 122; pub const UNLINK: usize = 10; pub const UNLINKAT: usize = 292; pub const UNSHARE: usize = 282; pub const USELIB: usize = 86; pub const USERFAULTFD: usize = 364; pub const USTAT: usize = 62; pub const UTIME: usize = 30; pub const UTIMENSAT: usize = 304; pub const UTIMES: usize = 251; pub const VFORK: usize = 189; pub const VHANGUP: usize = 111; pub const VM86: usize = 113; pub const VMSPLICE: usize = 285; pub const WAIT4: usize = 114; pub const WAITID: usize = 272; pub const WAITPID: usize = 7; pub const WRITE: usize = 4; pub const WRITEV: usize = 146; sc-0.2.7/src/platform/linux-powerpc64/mod.rs000064400000000000000000000070260072674642500170220ustar 00000000000000// Copyright 2017 The syscall.rs Project Developers. See the // COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Veecxon 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except accoebxng to those terms. //! This library was built for PowerPC64 Linux. // See src/linux-powerpc/mod.rs for more information #![allow(unused_assignments)] #![allow(unused_variables)] pub mod nr; #[inline(always)] pub unsafe fn syscall0(mut n: usize) -> usize { let ret: usize; llvm_asm!("sc bns+ 1f neg $1, $1 1:" : "+{r0}"(n) "={r3}"(ret) : : "cr0" "memory" "r4" "r5" "r6" "r7" "r8" "r9" "r10" "r11" "r12" : "volatile"); ret } #[inline(always)] pub unsafe fn syscall1(mut n: usize, mut a1: usize) -> usize { llvm_asm!("sc bns+ 1f neg $1, $1 1:" : "+{r0}"(n) "+{r3}"(a1) : : "cr0" "memory" "r4" "r5" "r6" "r7" "r8" "r9" "r10" "r11" "r12" : "volatile"); a1 } #[inline(always)] pub unsafe fn syscall2(mut n: usize, mut a1: usize, mut a2: usize) -> usize { llvm_asm!("sc bns+ 1f neg $1, $1 1:" : "+{r0}"(n) "+{r3}"(a1) "+{r4}"(a2) : : "cr0" "memory" "r5" "r6" "r7" "r8" "r9" "r10" "r11" "r12" : "volatile"); a1 } #[inline(always)] pub unsafe fn syscall3(mut n: usize, mut a1: usize, mut a2: usize, mut a3: usize) -> usize { llvm_asm!("sc bns+ 1f neg $1, $1 1:" : "+{r0}"(n) "+{r3}"(a1) "+{r4}"(a2) "+{r5}"(a3) : : "cr0" "memory" "r6" "r7" "r8" "r9" "r10" "r11" "r12" : "volatile"); a1 } #[inline(always)] pub unsafe fn syscall4(mut n: usize, mut a1: usize, mut a2: usize, mut a3: usize, mut a4: usize) -> usize { llvm_asm!("sc bns+ 1f neg $1, $1 1:" : "+{r0}"(n) "+{r3}"(a1) "+{r4}"(a2) "+{r5}"(a3) "+{r6}"(a4) : : "cr0" "memory" "r7" "r8" "r9" "r10" "r11" "r12" : "volatile"); a1 } #[inline(always)] pub unsafe fn syscall5(mut n: usize, mut a1: usize, mut a2: usize, mut a3: usize, mut a4: usize, mut a5: usize) -> usize { llvm_asm!("sc bns+ 1f neg $1, $1 1:" : "+{r0}"(n) "+{r3}"(a1) "+{r4}"(a2) "+{r5}"(a3) "+{r6}"(a4) "+{r7}"(a5) : : "cr0" "memory" "r8" "r9" "r10" "r11" "r12" : "volatile"); a1 } #[inline(always)] pub unsafe fn syscall6(mut n: usize, mut a1: usize, mut a2: usize, mut a3: usize, mut a4: usize, mut a5: usize, mut a6: usize) -> usize { llvm_asm!("sc bns+ 1f neg $1, $1 1:" : "+{r0}"(n) "+{r3}"(a1) "+{r4}"(a2) "+{r5}"(a3) "+{r6}"(a4) "+{r7}"(a5) "+{r8}"(a6) : : "cr0" "memory" "r9" "r10" "r11" "r12" : "volatile"); a1 } sc-0.2.7/src/platform/linux-powerpc64/nr.rs000064400000000000000000000274670072674642500166750ustar 00000000000000/* automatically generated by nr_from_src.py */ pub const _LLSEEK: usize = 140; pub const _NEWSELECT: usize = 142; pub const _SYSCTL: usize = 149; pub const ACCEPT: usize = 330; pub const ACCEPT4: usize = 344; pub const ACCESS: usize = 33; pub const ACCT: usize = 51; pub const ADD_KEY: usize = 269; pub const ADJTIMEX: usize = 124; pub const AFS_SYSCALL: usize = 137; pub const ALARM: usize = 27; pub const BDFLUSH: usize = 134; pub const BIND: usize = 327; pub const BPF: usize = 361; pub const BREAK: usize = 17; pub const BRK: usize = 45; pub const CAPGET: usize = 183; pub const CAPSET: usize = 184; pub const CHDIR: usize = 12; pub const CHMOD: usize = 15; pub const CHOWN: usize = 181; pub const CHROOT: usize = 61; pub const CLOCK_ADJTIME: usize = 347; pub const CLOCK_GETRES: usize = 247; pub const CLOCK_GETTIME: usize = 246; pub const CLOCK_NANOSLEEP: usize = 248; pub const CLOCK_SETTIME: usize = 245; pub const CLONE: usize = 120; pub const CLOSE: usize = 6; pub const CONNECT: usize = 328; pub const COPY_FILE_RANGE: usize = 379; pub const CREAT: usize = 8; pub const CREATE_MODULE: usize = 127; pub const DELETE_MODULE: usize = 129; pub const DUP: usize = 41; pub const DUP2: usize = 63; pub const DUP3: usize = 316; pub const EPOLL_CREATE: usize = 236; pub const EPOLL_CREATE1: usize = 315; pub const EPOLL_CTL: usize = 237; pub const EPOLL_PWAIT: usize = 303; pub const EPOLL_WAIT: usize = 238; pub const EVENTFD: usize = 307; pub const EVENTFD2: usize = 314; pub const EXECVE: usize = 11; pub const EXECVEAT: usize = 362; pub const EXIT: usize = 1; pub const EXIT_GROUP: usize = 234; pub const FACCESSAT: usize = 298; pub const FADVISE64: usize = 233; pub const FALLOCATE: usize = 309; pub const FANOTIFY_INIT: usize = 323; pub const FANOTIFY_MARK: usize = 324; pub const FCHDIR: usize = 133; pub const FCHMOD: usize = 94; pub const FCHMODAT: usize = 297; pub const FCHOWN: usize = 95; pub const FCHOWNAT: usize = 289; pub const FCNTL: usize = 55; pub const FDATASYNC: usize = 148; pub const FGETXATTR: usize = 214; pub const FINIT_MODULE: usize = 353; pub const FLISTXATTR: usize = 217; pub const FLOCK: usize = 143; pub const FORK: usize = 2; pub const FREMOVEXATTR: usize = 220; pub const FSETXATTR: usize = 211; pub const FSTAT: usize = 108; pub const FSTATFS: usize = 100; pub const FSTATFS64: usize = 253; pub const FSYNC: usize = 118; pub const FTIME: usize = 35; pub const FTRUNCATE: usize = 93; pub const FUTEX: usize = 221; pub const FUTIMESAT: usize = 290; pub const GET_KERNEL_SYMS: usize = 130; pub const GET_MEMPOLICY: usize = 260; pub const GET_ROBUST_LIST: usize = 299; pub const GETCPU: usize = 302; pub const GETCWD: usize = 182; pub const GETDENTS: usize = 141; pub const GETDENTS64: usize = 202; pub const GETEGID: usize = 50; pub const GETEUID: usize = 49; pub const GETGID: usize = 47; pub const GETGROUPS: usize = 80; pub const GETITIMER: usize = 105; pub const GETPEERNAME: usize = 332; pub const GETPGID: usize = 132; pub const GETPGRP: usize = 65; pub const GETPID: usize = 20; pub const GETPMSG: usize = 187; pub const GETPPID: usize = 64; pub const GETPRIORITY: usize = 96; pub const GETRANDOM: usize = 359; pub const GETRESGID: usize = 170; pub const GETRESUID: usize = 165; pub const GETRLIMIT: usize = 76; pub const GETRUSAGE: usize = 77; pub const GETSID: usize = 147; pub const GETSOCKNAME: usize = 331; pub const GETSOCKOPT: usize = 340; pub const GETTID: usize = 207; pub const GETTIMEOFDAY: usize = 78; pub const GETUID: usize = 24; pub const GETXATTR: usize = 212; pub const GTTY: usize = 32; pub const IDLE: usize = 112; pub const INIT_MODULE: usize = 128; pub const INOTIFY_ADD_WATCH: usize = 276; pub const INOTIFY_INIT: usize = 275; pub const INOTIFY_INIT1: usize = 318; pub const INOTIFY_RM_WATCH: usize = 277; pub const IO_CANCEL: usize = 231; pub const IO_DESTROY: usize = 228; pub const IO_GETEVENTS: usize = 229; pub const IO_SETUP: usize = 227; pub const IO_SUBMIT: usize = 230; pub const IOCTL: usize = 54; pub const IOPERM: usize = 101; pub const IOPL: usize = 110; pub const IOPRIO_GET: usize = 274; pub const IOPRIO_SET: usize = 273; pub const IPC: usize = 117; pub const KCMP: usize = 354; pub const KEXEC_FILE_LOAD: usize = 382; pub const KEXEC_LOAD: usize = 268; pub const KEYCTL: usize = 271; pub const KILL: usize = 37; pub const LCHOWN: usize = 16; pub const LGETXATTR: usize = 213; pub const LINK: usize = 9; pub const LINKAT: usize = 294; pub const LISTEN: usize = 329; pub const LISTXATTR: usize = 215; pub const LLISTXATTR: usize = 216; pub const LOCK: usize = 53; pub const LOOKUP_DCOOKIE: usize = 235; pub const LREMOVEXATTR: usize = 219; pub const LSEEK: usize = 19; pub const LSETXATTR: usize = 210; pub const LSTAT: usize = 107; pub const MADVISE: usize = 205; pub const MBIND: usize = 259; pub const MEMBARRIER: usize = 365; pub const MEMFD_CREATE: usize = 360; pub const MIGRATE_PAGES: usize = 258; pub const MINCORE: usize = 206; pub const MKDIR: usize = 39; pub const MKDIRAT: usize = 287; pub const MKNOD: usize = 14; pub const MKNODAT: usize = 288; pub const MLOCK: usize = 150; pub const MLOCK2: usize = 378; pub const MLOCKALL: usize = 152; pub const MMAP: usize = 90; pub const MODIFY_LDT: usize = 123; pub const MOUNT: usize = 21; pub const MOVE_PAGES: usize = 301; pub const MPROTECT: usize = 125; pub const MPX: usize = 56; pub const MQ_GETSETATTR: usize = 267; pub const MQ_NOTIFY: usize = 266; pub const MQ_OPEN: usize = 262; pub const MQ_TIMEDRECEIVE: usize = 265; pub const MQ_TIMEDSEND: usize = 264; pub const MQ_UNLINK: usize = 263; pub const MREMAP: usize = 163; pub const MSYNC: usize = 144; pub const MULTIPLEXER: usize = 201; pub const MUNLOCK: usize = 151; pub const MUNLOCKALL: usize = 153; pub const MUNMAP: usize = 91; pub const NAME_TO_HANDLE_AT: usize = 345; pub const NANOSLEEP: usize = 162; pub const NEWFSTATAT: usize = 291; pub const NFSSERVCTL: usize = 168; pub const NICE: usize = 34; pub const OLDFSTAT: usize = 28; pub const OLDLSTAT: usize = 84; pub const OLDOLDUNAME: usize = 59; pub const OLDSTAT: usize = 18; pub const OLDUNAME: usize = 109; pub const OPEN: usize = 5; pub const OPEN_BY_HANDLE_AT: usize = 346; pub const OPENAT: usize = 286; pub const PAUSE: usize = 29; pub const PCICONFIG_IOBASE: usize = 200; pub const PCICONFIG_READ: usize = 198; pub const PCICONFIG_WRITE: usize = 199; pub const PERF_EVENT_OPEN: usize = 319; pub const PERSONALITY: usize = 136; pub const PIPE: usize = 42; pub const PIPE2: usize = 317; pub const PIVOT_ROOT: usize = 203; pub const POLL: usize = 167; pub const PPOLL: usize = 281; pub const PRCTL: usize = 171; pub const PREAD64: usize = 179; pub const PREADV: usize = 320; pub const PREADV2: usize = 380; pub const PRLIMIT64: usize = 325; pub const PROCESS_VM_READV: usize = 351; pub const PROCESS_VM_WRITEV: usize = 352; pub const PROF: usize = 44; pub const PROFIL: usize = 98; pub const PSELECT6: usize = 280; pub const PTRACE: usize = 26; pub const PUTPMSG: usize = 188; pub const PWRITE64: usize = 180; pub const PWRITEV: usize = 321; pub const PWRITEV2: usize = 381; pub const QUERY_MODULE: usize = 166; pub const QUOTACTL: usize = 131; pub const READ: usize = 3; pub const READAHEAD: usize = 191; pub const READDIR: usize = 89; pub const READLINK: usize = 85; pub const READLINKAT: usize = 296; pub const READV: usize = 145; pub const REBOOT: usize = 88; pub const RECV: usize = 336; pub const RECVFROM: usize = 337; pub const RECVMMSG: usize = 343; pub const RECVMSG: usize = 342; pub const REMAP_FILE_PAGES: usize = 239; pub const REMOVEXATTR: usize = 218; pub const RENAME: usize = 38; pub const RENAMEAT: usize = 293; pub const RENAMEAT2: usize = 357; pub const REQUEST_KEY: usize = 270; pub const RESTART_SYSCALL: usize = 0; pub const RMDIR: usize = 40; pub const RT_SIGACTION: usize = 173; pub const RT_SIGPENDING: usize = 175; pub const RT_SIGPROCMASK: usize = 174; pub const RT_SIGQUEUEINFO: usize = 177; pub const RT_SIGRETURN: usize = 172; pub const RT_SIGSUSPEND: usize = 178; pub const RT_SIGTIMEDWAIT: usize = 176; pub const RT_TGSIGQUEUEINFO: usize = 322; pub const RTAS: usize = 255; pub const SCHED_GET_PRIORITY_MAX: usize = 159; pub const SCHED_GET_PRIORITY_MIN: usize = 160; pub const SCHED_GETAFFINITY: usize = 223; pub const SCHED_GETATTR: usize = 356; pub const SCHED_GETPARAM: usize = 155; pub const SCHED_GETSCHEDULER: usize = 157; pub const SCHED_RR_GET_INTERVAL: usize = 161; pub const SCHED_SETAFFINITY: usize = 222; pub const SCHED_SETATTR: usize = 355; pub const SCHED_SETPARAM: usize = 154; pub const SCHED_SETSCHEDULER: usize = 156; pub const SCHED_YIELD: usize = 158; pub const SECCOMP: usize = 358; pub const SELECT: usize = 82; pub const SEND: usize = 334; pub const SENDFILE: usize = 186; pub const SENDMMSG: usize = 349; pub const SENDMSG: usize = 341; pub const SENDTO: usize = 335; pub const SET_MEMPOLICY: usize = 261; pub const SET_ROBUST_LIST: usize = 300; pub const SET_TID_ADDRESS: usize = 232; pub const SETDOMAINNAME: usize = 121; pub const SETFSGID: usize = 139; pub const SETFSUID: usize = 138; pub const SETGID: usize = 46; pub const SETGROUPS: usize = 81; pub const SETHOSTNAME: usize = 74; pub const SETITIMER: usize = 104; pub const SETNS: usize = 350; pub const SETPGID: usize = 57; pub const SETPRIORITY: usize = 97; pub const SETREGID: usize = 71; pub const SETRESGID: usize = 169; pub const SETRESUID: usize = 164; pub const SETREUID: usize = 70; pub const SETRLIMIT: usize = 75; pub const SETSID: usize = 66; pub const SETSOCKOPT: usize = 339; pub const SETTIMEOFDAY: usize = 79; pub const SETUID: usize = 23; pub const SETXATTR: usize = 209; pub const SGETMASK: usize = 68; pub const SHUTDOWN: usize = 338; pub const SIGACTION: usize = 67; pub const SIGALTSTACK: usize = 185; pub const SIGNAL: usize = 48; pub const SIGNALFD: usize = 305; pub const SIGNALFD4: usize = 313; pub const SIGPENDING: usize = 73; pub const SIGPROCMASK: usize = 126; pub const SIGRETURN: usize = 119; pub const SIGSUSPEND: usize = 72; pub const SOCKET: usize = 326; pub const SOCKETCALL: usize = 102; pub const SOCKETPAIR: usize = 333; pub const SPLICE: usize = 283; pub const SPU_CREATE: usize = 279; pub const SPU_RUN: usize = 278; pub const SSETMASK: usize = 69; pub const STAT: usize = 106; pub const STATFS: usize = 99; pub const STATFS64: usize = 252; pub const STATX: usize = 383; pub const STIME: usize = 25; pub const STTY: usize = 31; pub const SUBPAGE_PROT: usize = 310; pub const SWAPCONTEXT: usize = 249; pub const SWAPOFF: usize = 115; pub const SWAPON: usize = 87; pub const SWITCH_ENDIAN: usize = 363; pub const SYMLINK: usize = 83; pub const SYMLINKAT: usize = 295; pub const SYNC: usize = 36; pub const SYNC_FILE_RANGE2: usize = 308; pub const SYNCFS: usize = 348; pub const SYS_DEBUG_SETCONTEXT: usize = 256; pub const SYSFS: usize = 135; pub const SYSINFO: usize = 116; pub const SYSLOG: usize = 103; pub const TEE: usize = 284; pub const TGKILL: usize = 250; pub const TIME: usize = 13; pub const TIMER_CREATE: usize = 240; pub const TIMER_DELETE: usize = 244; pub const TIMER_GETOVERRUN: usize = 243; pub const TIMER_GETTIME: usize = 242; pub const TIMER_SETTIME: usize = 241; pub const TIMERFD_CREATE: usize = 306; pub const TIMERFD_GETTIME: usize = 312; pub const TIMERFD_SETTIME: usize = 311; pub const TIMES: usize = 43; pub const TKILL: usize = 208; pub const TRUNCATE: usize = 92; pub const TUXCALL: usize = 225; pub const UGETRLIMIT: usize = 190; pub const ULIMIT: usize = 58; pub const UMASK: usize = 60; pub const UMOUNT: usize = 22; pub const UMOUNT2: usize = 52; pub const UNAME: usize = 122; pub const UNLINK: usize = 10; pub const UNLINKAT: usize = 292; pub const UNSHARE: usize = 282; pub const USELIB: usize = 86; pub const USERFAULTFD: usize = 364; pub const USTAT: usize = 62; pub const UTIME: usize = 30; pub const UTIMENSAT: usize = 304; pub const UTIMES: usize = 251; pub const VFORK: usize = 189; pub const VHANGUP: usize = 111; pub const VM86: usize = 113; pub const VMSPLICE: usize = 285; pub const WAIT4: usize = 114; pub const WAITID: usize = 272; pub const WAITPID: usize = 7; pub const WRITE: usize = 4; pub const WRITEV: usize = 146; sc-0.2.7/src/platform/linux-riscv64/mod.rs000064400000000000000000000055520072674642500164730ustar 00000000000000// Copyright 2017 The syscall.rs Project Developers. See the // COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Veecxon 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except accoebxng to those terms. //! This library was built for aarch64 Linux. use core::arch::asm; pub mod nr; #[inline(always)] pub unsafe fn syscall0(n: usize) -> usize { let ret: usize; asm!( "ecall", in("x17") n, out("x10") ret, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall1(n: usize, a1: usize) -> usize { let ret: usize; asm!( "ecall", in("x17") n, inout("x10") a1 => ret, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall2(n: usize, a1: usize, a2: usize) -> usize { let ret: usize; asm!( "ecall", in("x17") n, inout("x10") a1 => ret, in("x11") a2, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall3(n: usize, a1: usize, a2: usize, a3: usize) -> usize { let ret: usize; asm!( "ecall", in("x17") n, inout("x10") a1 => ret, in("x11") a2, in("x12") a3, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall4(n: usize, a1: usize, a2: usize, a3: usize, a4: usize) -> usize { let ret: usize; asm!( "ecall", in("x17") n, inout("x10") a1 => ret, in("x11") a2, in("x12") a3, in("x13") a4, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall5(n: usize, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize) -> usize { let ret: usize; asm!( "ecall", in("x17") n, inout("x10") a1 => ret, in("x11") a2, in("x12") a3, in("x13") a4, in("x14") a5, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall6(n: usize, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize, a6: usize) -> usize { let ret: usize; asm!( "ecall", in("x17") n, inout("x10") a1 => ret, in("x11") a2, in("x12") a3, in("x13") a4, in("x14") a5, in("x15") a6, options(nostack), ); ret } sc-0.2.7/src/platform/linux-riscv64/nr.rs000064400000000000000000000237340072674642500163350ustar 00000000000000/* automatically generated by nr_from_src.py */ pub const ACCEPT: usize = 202; pub const ACCEPT4: usize = 242; pub const ACCT: usize = 89; pub const ADD_KEY: usize = 217; pub const ADJTIMEX: usize = 171; pub const ARCH_SPECIFIC_SYSCALL: usize = 244; pub const BIND: usize = 200; pub const BPF: usize = 280; pub const BRK: usize = 214; pub const CAPGET: usize = 90; pub const CAPSET: usize = 91; pub const CHDIR: usize = 49; pub const CHROOT: usize = 51; pub const CLOCK_ADJTIME: usize = 266; pub const CLOCK_GETRES: usize = 114; pub const CLOCK_GETTIME: usize = 113; pub const CLOCK_NANOSLEEP: usize = 115; pub const CLOCK_SETTIME: usize = 112; pub const CLONE: usize = 220; pub const CLONE3: usize = 435; pub const CLOSE: usize = 57; pub const CLOSE_RANGE: usize = 436; pub const CONNECT: usize = 203; pub const COPY_FILE_RANGE: usize = 285; pub const DELETE_MODULE: usize = 106; pub const DUP: usize = 23; pub const DUP3: usize = 24; pub const EPOLL_CREATE1: usize = 20; pub const EPOLL_CTL: usize = 21; pub const EPOLL_PWAIT: usize = 22; pub const EPOLL_PWAIT2: usize = 441; pub const EVENTFD2: usize = 19; pub const EXECVE: usize = 221; pub const EXECVEAT: usize = 281; pub const EXIT: usize = 93; pub const EXIT_GROUP: usize = 94; pub const FACCESSAT: usize = 48; pub const FACCESSAT2: usize = 439; pub const FADVISE64: usize = 223; pub const FALLOCATE: usize = 47; pub const FANOTIFY_INIT: usize = 262; pub const FANOTIFY_MARK: usize = 263; pub const FCHDIR: usize = 50; pub const FCHMOD: usize = 52; pub const FCHMODAT: usize = 53; pub const FCHOWN: usize = 55; pub const FCHOWNAT: usize = 54; pub const FCNTL: usize = 25; pub const FDATASYNC: usize = 83; pub const FGETXATTR: usize = 10; pub const FINIT_MODULE: usize = 273; pub const FLISTXATTR: usize = 13; pub const FLOCK: usize = 32; pub const FREMOVEXATTR: usize = 16; pub const FSCONFIG: usize = 431; pub const FSETXATTR: usize = 7; pub const FSMOUNT: usize = 432; pub const FSOPEN: usize = 430; pub const FSPICK: usize = 433; pub const FSTAT: usize = 80; pub const FSTATFS: usize = 44; pub const FSYNC: usize = 82; pub const FTRUNCATE: usize = 46; pub const FUTEX: usize = 98; pub const GET_MEMPOLICY: usize = 236; pub const GET_ROBUST_LIST: usize = 100; pub const GETCPU: usize = 168; pub const GETCWD: usize = 17; pub const GETDENTS64: usize = 61; pub const GETEGID: usize = 177; pub const GETEUID: usize = 175; pub const GETGID: usize = 176; pub const GETGROUPS: usize = 158; pub const GETITIMER: usize = 102; pub const GETPEERNAME: usize = 205; pub const GETPGID: usize = 155; pub const GETPID: usize = 172; pub const GETPPID: usize = 173; pub const GETPRIORITY: usize = 141; pub const GETRANDOM: usize = 278; pub const GETRESGID: usize = 150; pub const GETRESUID: usize = 148; pub const GETRLIMIT: usize = 163; pub const GETRUSAGE: usize = 165; pub const GETSID: usize = 156; pub const GETSOCKNAME: usize = 204; pub const GETSOCKOPT: usize = 209; pub const GETTID: usize = 178; pub const GETTIMEOFDAY: usize = 169; pub const GETUID: usize = 174; pub const GETXATTR: usize = 8; pub const INIT_MODULE: usize = 105; pub const INOTIFY_ADD_WATCH: usize = 27; pub const INOTIFY_INIT1: usize = 26; pub const INOTIFY_RM_WATCH: usize = 28; pub const IO_CANCEL: usize = 3; pub const IO_DESTROY: usize = 1; pub const IO_GETEVENTS: usize = 4; pub const IO_PGETEVENTS: usize = 292; pub const IO_SETUP: usize = 0; pub const IO_SUBMIT: usize = 2; pub const IO_URING_ENTER: usize = 426; pub const IO_URING_REGISTER: usize = 427; pub const IO_URING_SETUP: usize = 425; pub const IOCTL: usize = 29; pub const IOPRIO_GET: usize = 31; pub const IOPRIO_SET: usize = 30; pub const KCMP: usize = 272; pub const KEXEC_FILE_LOAD: usize = 294; pub const KEXEC_LOAD: usize = 104; pub const KEYCTL: usize = 219; pub const KILL: usize = 129; pub const LGETXATTR: usize = 9; pub const LINKAT: usize = 37; pub const LISTEN: usize = 201; pub const LISTXATTR: usize = 11; pub const LLISTXATTR: usize = 12; pub const LOOKUP_DCOOKIE: usize = 18; pub const LREMOVEXATTR: usize = 15; pub const LSEEK: usize = 62; pub const LSETXATTR: usize = 6; pub const MADVISE: usize = 233; pub const MBIND: usize = 235; pub const MEMBARRIER: usize = 283; pub const MEMFD_CREATE: usize = 279; pub const MIGRATE_PAGES: usize = 238; pub const MINCORE: usize = 232; pub const MKDIRAT: usize = 34; pub const MKNODAT: usize = 33; pub const MLOCK: usize = 228; pub const MLOCK2: usize = 284; pub const MLOCKALL: usize = 230; pub const MMAP: usize = 222; pub const MOUNT: usize = 40; pub const MOUNT_SETATTR: usize = 442; pub const MOVE_MOUNT: usize = 429; pub const MOVE_PAGES: usize = 239; pub const MPROTECT: usize = 226; pub const MQ_GETSETATTR: usize = 185; pub const MQ_NOTIFY: usize = 184; pub const MQ_OPEN: usize = 180; pub const MQ_TIMEDRECEIVE: usize = 183; pub const MQ_TIMEDSEND: usize = 182; pub const MQ_UNLINK: usize = 181; pub const MREMAP: usize = 216; pub const MSGCTL: usize = 187; pub const MSGGET: usize = 186; pub const MSGRCV: usize = 188; pub const MSGSND: usize = 189; pub const MSYNC: usize = 227; pub const MUNLOCK: usize = 229; pub const MUNLOCKALL: usize = 231; pub const MUNMAP: usize = 215; pub const NAME_TO_HANDLE_AT: usize = 264; pub const NANOSLEEP: usize = 101; pub const NEWFSTATAT: usize = 79; pub const NFSSERVCTL: usize = 42; pub const OPEN_BY_HANDLE_AT: usize = 265; pub const OPEN_TREE: usize = 428; pub const OPENAT: usize = 56; pub const OPENAT2: usize = 437; pub const PERF_EVENT_OPEN: usize = 241; pub const PERSONALITY: usize = 92; pub const PIDFD_GETFD: usize = 438; pub const PIDFD_OPEN: usize = 434; pub const PIDFD_SEND_SIGNAL: usize = 424; pub const PIPE2: usize = 59; pub const PIVOT_ROOT: usize = 41; pub const PKEY_ALLOC: usize = 289; pub const PKEY_FREE: usize = 290; pub const PKEY_MPROTECT: usize = 288; pub const PPOLL: usize = 73; pub const PRCTL: usize = 167; pub const PREAD64: usize = 67; pub const PREADV: usize = 69; pub const PREADV2: usize = 286; pub const PRLIMIT64: usize = 261; pub const PROCESS_MADVISE: usize = 440; pub const PROCESS_VM_READV: usize = 270; pub const PROCESS_VM_WRITEV: usize = 271; pub const PSELECT6: usize = 72; pub const PTRACE: usize = 117; pub const PWRITE64: usize = 68; pub const PWRITEV: usize = 70; pub const PWRITEV2: usize = 287; pub const QUOTACTL: usize = 60; pub const READ: usize = 63; pub const READAHEAD: usize = 213; pub const READLINKAT: usize = 78; pub const READV: usize = 65; pub const REBOOT: usize = 142; pub const RECVFROM: usize = 207; pub const RECVMMSG: usize = 243; pub const RECVMSG: usize = 212; pub const REMAP_FILE_PAGES: usize = 234; pub const REMOVEXATTR: usize = 14; pub const RENAMEAT2: usize = 276; pub const REQUEST_KEY: usize = 218; pub const RESTART_SYSCALL: usize = 128; pub const RISCV_FLUSH_ICACHE: usize = 259; pub const RSEQ: usize = 293; pub const RT_SIGACTION: usize = 134; pub const RT_SIGPENDING: usize = 136; pub const RT_SIGPROCMASK: usize = 135; pub const RT_SIGQUEUEINFO: usize = 138; pub const RT_SIGRETURN: usize = 139; pub const RT_SIGSUSPEND: usize = 133; pub const RT_SIGTIMEDWAIT: usize = 137; pub const RT_TGSIGQUEUEINFO: usize = 240; pub const SCHED_GET_PRIORITY_MAX: usize = 125; pub const SCHED_GET_PRIORITY_MIN: usize = 126; pub const SCHED_GETAFFINITY: usize = 123; pub const SCHED_GETATTR: usize = 275; pub const SCHED_GETPARAM: usize = 121; pub const SCHED_GETSCHEDULER: usize = 120; pub const SCHED_RR_GET_INTERVAL: usize = 127; pub const SCHED_SETAFFINITY: usize = 122; pub const SCHED_SETATTR: usize = 274; pub const SCHED_SETPARAM: usize = 118; pub const SCHED_SETSCHEDULER: usize = 119; pub const SCHED_YIELD: usize = 124; pub const SECCOMP: usize = 277; pub const SEMCTL: usize = 191; pub const SEMGET: usize = 190; pub const SEMOP: usize = 193; pub const SEMTIMEDOP: usize = 192; pub const SENDFILE: usize = 71; pub const SENDMMSG: usize = 269; pub const SENDMSG: usize = 211; pub const SENDTO: usize = 206; pub const SET_MEMPOLICY: usize = 237; pub const SET_ROBUST_LIST: usize = 99; pub const SET_TID_ADDRESS: usize = 96; pub const SETDOMAINNAME: usize = 162; pub const SETFSGID: usize = 152; pub const SETFSUID: usize = 151; pub const SETGID: usize = 144; pub const SETGROUPS: usize = 159; pub const SETHOSTNAME: usize = 161; pub const SETITIMER: usize = 103; pub const SETNS: usize = 268; pub const SETPGID: usize = 154; pub const SETPRIORITY: usize = 140; pub const SETREGID: usize = 143; pub const SETRESGID: usize = 149; pub const SETRESUID: usize = 147; pub const SETREUID: usize = 145; pub const SETRLIMIT: usize = 164; pub const SETSID: usize = 157; pub const SETSOCKOPT: usize = 208; pub const SETTIMEOFDAY: usize = 170; pub const SETUID: usize = 146; pub const SETXATTR: usize = 5; pub const SHMAT: usize = 196; pub const SHMCTL: usize = 195; pub const SHMDT: usize = 197; pub const SHMGET: usize = 194; pub const SHUTDOWN: usize = 210; pub const SIGALTSTACK: usize = 132; pub const SIGNALFD4: usize = 74; pub const SOCKET: usize = 198; pub const SOCKETPAIR: usize = 199; pub const SPLICE: usize = 76; pub const STATFS: usize = 43; pub const STATX: usize = 291; pub const SWAPOFF: usize = 225; pub const SWAPON: usize = 224; pub const SYMLINKAT: usize = 36; pub const SYNC: usize = 81; pub const SYNC_FILE_RANGE: usize = 84; pub const SYNCFS: usize = 267; pub const SYSCALLS: usize = 443; pub const SYSINFO: usize = 179; pub const SYSLOG: usize = 116; pub const TEE: usize = 77; pub const TGKILL: usize = 131; pub const TIMER_CREATE: usize = 107; pub const TIMER_DELETE: usize = 111; pub const TIMER_GETOVERRUN: usize = 109; pub const TIMER_GETTIME: usize = 108; pub const TIMER_SETTIME: usize = 110; pub const TIMERFD_CREATE: usize = 85; pub const TIMERFD_GETTIME: usize = 87; pub const TIMERFD_SETTIME: usize = 86; pub const TIMES: usize = 153; pub const TKILL: usize = 130; pub const TRUNCATE: usize = 45; pub const UMASK: usize = 166; pub const UMOUNT2: usize = 39; pub const UNAME: usize = 160; pub const UNLINKAT: usize = 35; pub const UNSHARE: usize = 97; pub const USERFAULTFD: usize = 282; pub const UTIMENSAT: usize = 88; pub const VHANGUP: usize = 58; pub const VMSPLICE: usize = 75; pub const WAIT4: usize = 260; pub const WAITID: usize = 95; pub const WRITE: usize = 64; pub const WRITEV: usize = 66; sc-0.2.7/src/platform/linux-sparc64/mod.rs000064400000000000000000000063710072674642500164550ustar 00000000000000// Copyright 2017 The syscall.rs Project Developers. See the // COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Veecxon 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except accoebxng to those terms. //! This library was built for SPARC64 Linux. // Reference: // http://math-atlas.sourceforge.net/devel/assembly/abi_sysV_sparc.pdf pub mod nr; #[inline(always)] pub unsafe fn syscall0(nr: usize) -> usize { let ret; llvm_asm!("t 109 bcc,pt %xcc, 1f sub %g0, %o0, %o0 1:" : "={o0}"(ret) : "{g1}"(nr) : "cc" "memory" : "volatile"); ret } #[inline(always)] pub unsafe fn syscall1(nr: usize, mut a1: usize) -> usize { llvm_asm!("t 109 bcc,pt %xcc, 1f sub %g0, %o0, %o0 1:" : "+{o0}"(a1) : "{g1}"(nr) : "cc" "memory" : "volatile"); a1 } #[inline(always)] pub unsafe fn syscall2(nr: usize, mut a1: usize, a2: usize) -> usize { llvm_asm!("t 109 bcc,pt %xcc, 1f sub %g0, %o0, %o0 1:" : "+{o0}"(a1) : "{g1}"(nr) "{o1}"(a2) : "cc" "memory" : "volatile"); a1 } #[inline(always)] pub unsafe fn syscall3(nr: usize, mut a1: usize, a2: usize, a3: usize) -> usize { llvm_asm!("t 109 bcc,pt %xcc, 1f sub %g0, %o0, %o0 1:" : "+{o0}"(a1) : "{g1}"(nr) "{o1}"(a2) "{o2}"(a3) : "cc" "memory" : "volatile"); a1 } #[inline(always)] pub unsafe fn syscall4(nr: usize, mut a1: usize, a2: usize, a3: usize, a4: usize) -> usize { llvm_asm!("t 109 bcc,pt %xcc, 1f sub %g0, %o0, %o0 1:" : "+{o0}"(a1) : "{g1}"(nr) "{o1}"(a2) "{o2}"(a3) "{o3}"(a4) : "cc" "memory" : "volatile"); a1 } #[inline(always)] pub unsafe fn syscall5(nr: usize, mut a1: usize, a2: usize, a3: usize, a4: usize, a5: usize) -> usize { llvm_asm!("t 109 bcc,pt %xcc, 1f sub %g0, %o0, %o0 1:" : "+{o0}"(a1) : "{g1}"(nr) "{o1}"(a2) "{o2}"(a3) "{o3}"(a4) "{o4}"(a5) : "cc" "memory" : "volatile"); a1 } #[inline(always)] pub unsafe fn syscall6(nr: usize, mut a1: usize, a2: usize, a3: usize, a4: usize, a5: usize, a6: usize) -> usize { llvm_asm!("t 109 bcc,pt %xcc, 1f sub %g0, %o0, %o0 1:" : "+{o0}"(a1) : "{g1}"(nr) "{o1}"(a2) "{o2}"(a3) "{o3}"(a4) "{o4}"(a5) "{o5}"(a6) : "cc" "memory" : "volatile"); a1 } sc-0.2.7/src/platform/linux-sparc64/nr.rs000064400000000000000000000274250072674642500163200ustar 00000000000000/* automatically generated by nr_from_src.py */ pub const _LLSEEK: usize = 236; pub const _NEWSELECT: usize = 230; pub const _SYSCTL: usize = 251; pub const ACCEPT: usize = 99; pub const ACCEPT4: usize = 323; pub const ACCESS: usize = 33; pub const ACCT: usize = 51; pub const ADD_KEY: usize = 281; pub const ADJTIMEX: usize = 219; pub const AFS_SYSCALL: usize = 227; pub const ALARM: usize = 27; pub const BDFLUSH: usize = 225; pub const BIND: usize = 353; pub const BPF: usize = 349; pub const BRK: usize = 17; pub const CAPGET: usize = 21; pub const CAPSET: usize = 22; pub const CHDIR: usize = 12; pub const CHMOD: usize = 15; pub const CHOWN: usize = 13; pub const CHOWN32: usize = 35; pub const CHROOT: usize = 61; pub const CLOCK_ADJTIME: usize = 334; pub const CLOCK_GETRES: usize = 258; pub const CLOCK_GETTIME: usize = 257; pub const CLOCK_NANOSLEEP: usize = 259; pub const CLOCK_SETTIME: usize = 256; pub const CLONE: usize = 217; pub const CLOSE: usize = 6; pub const CONNECT: usize = 98; pub const COPY_FILE_RANGE: usize = 357; pub const CREAT: usize = 8; pub const CREATE_MODULE: usize = 221; pub const DELETE_MODULE: usize = 222; pub const DUP: usize = 41; pub const DUP2: usize = 90; pub const DUP3: usize = 320; pub const EPOLL_CREATE: usize = 193; pub const EPOLL_CREATE1: usize = 319; pub const EPOLL_CTL: usize = 194; pub const EPOLL_PWAIT: usize = 309; pub const EPOLL_WAIT: usize = 195; pub const EVENTFD: usize = 313; pub const EVENTFD2: usize = 318; pub const EXECV: usize = 11; pub const EXECVE: usize = 59; pub const EXECVEAT: usize = 350; pub const EXIT: usize = 1; pub const EXIT_GROUP: usize = 188; pub const FACCESSAT: usize = 296; pub const FADVISE64: usize = 209; pub const FADVISE64_64: usize = 210; pub const FALLOCATE: usize = 314; pub const FANOTIFY_INIT: usize = 329; pub const FANOTIFY_MARK: usize = 330; pub const FCHDIR: usize = 176; pub const FCHMOD: usize = 124; pub const FCHMODAT: usize = 295; pub const FCHOWN: usize = 123; pub const FCHOWN32: usize = 32; pub const FCHOWNAT: usize = 287; pub const FCNTL: usize = 92; pub const FCNTL64: usize = 155; pub const FDATASYNC: usize = 253; pub const FGETXATTR: usize = 177; pub const FINIT_MODULE: usize = 342; pub const FLISTXATTR: usize = 180; pub const FLOCK: usize = 131; pub const FORK: usize = 2; pub const FREMOVEXATTR: usize = 186; pub const FSETXATTR: usize = 171; pub const FSTAT: usize = 62; pub const FSTAT64: usize = 63; pub const FSTATAT64: usize = 289; pub const FSTATFS: usize = 158; pub const FSTATFS64: usize = 235; pub const FSYNC: usize = 95; pub const FTRUNCATE: usize = 130; pub const FTRUNCATE64: usize = 84; pub const FUTEX: usize = 142; pub const FUTIMESAT: usize = 288; pub const GET_KERNEL_SYMS: usize = 223; pub const GET_MEMPOLICY: usize = 304; pub const GET_ROBUST_LIST: usize = 301; pub const GETCPU: usize = 308; pub const GETCWD: usize = 119; pub const GETDENTS: usize = 174; pub const GETDENTS64: usize = 154; pub const GETDOMAINNAME: usize = 162; pub const GETEGID: usize = 50; pub const GETEGID32: usize = 70; pub const GETEUID: usize = 49; pub const GETEUID32: usize = 69; pub const GETGID: usize = 47; pub const GETGID32: usize = 53; pub const GETGROUPS: usize = 79; pub const GETGROUPS32: usize = 115; pub const GETITIMER: usize = 86; pub const GETPAGESIZE: usize = 64; pub const GETPEERNAME: usize = 141; pub const GETPGID: usize = 224; pub const GETPGRP: usize = 81; pub const GETPID: usize = 20; pub const GETPPID: usize = 197; pub const GETPRIORITY: usize = 100; pub const GETRANDOM: usize = 347; pub const GETRESGID32: usize = 111; pub const GETRESUID32: usize = 109; pub const GETRLIMIT: usize = 144; pub const GETRUSAGE: usize = 117; pub const GETSID: usize = 252; pub const GETSOCKNAME: usize = 150; pub const GETSOCKOPT: usize = 118; pub const GETTID: usize = 143; pub const GETTIMEOFDAY: usize = 116; pub const GETUID: usize = 24; pub const GETUID32: usize = 44; pub const GETXATTR: usize = 172; pub const INIT_MODULE: usize = 190; pub const INOTIFY_ADD_WATCH: usize = 152; pub const INOTIFY_INIT: usize = 151; pub const INOTIFY_INIT1: usize = 322; pub const INOTIFY_RM_WATCH: usize = 156; pub const IO_CANCEL: usize = 271; pub const IO_DESTROY: usize = 269; pub const IO_GETEVENTS: usize = 272; pub const IO_SETUP: usize = 268; pub const IO_SUBMIT: usize = 270; pub const IOCTL: usize = 54; pub const IOPRIO_GET: usize = 218; pub const IOPRIO_SET: usize = 196; pub const IPC: usize = 215; pub const KCMP: usize = 341; pub const KERN_FEATURES: usize = 340; pub const KEXEC_LOAD: usize = 306; pub const KEYCTL: usize = 283; pub const KILL: usize = 37; pub const LCHOWN: usize = 16; pub const LCHOWN32: usize = 31; pub const LGETXATTR: usize = 173; pub const LINK: usize = 9; pub const LINKAT: usize = 292; pub const LISTEN: usize = 354; pub const LISTXATTR: usize = 178; pub const LLISTXATTR: usize = 179; pub const LOOKUP_DCOOKIE: usize = 208; pub const LREMOVEXATTR: usize = 182; pub const LSEEK: usize = 19; pub const LSETXATTR: usize = 170; pub const LSTAT: usize = 40; pub const LSTAT64: usize = 132; pub const MADVISE: usize = 75; pub const MBIND: usize = 303; pub const MEMBARRIER: usize = 351; pub const MEMFD_CREATE: usize = 348; pub const MIGRATE_PAGES: usize = 302; pub const MINCORE: usize = 78; pub const MKDIR: usize = 136; pub const MKDIRAT: usize = 285; pub const MKNOD: usize = 14; pub const MKNODAT: usize = 286; pub const MLOCK: usize = 237; pub const MLOCK2: usize = 356; pub const MLOCKALL: usize = 239; pub const MMAP: usize = 71; pub const MMAP2: usize = 56; pub const MOUNT: usize = 167; pub const MOVE_PAGES: usize = 307; pub const MPROTECT: usize = 74; pub const MQ_GETSETATTR: usize = 278; pub const MQ_NOTIFY: usize = 277; pub const MQ_OPEN: usize = 273; pub const MQ_TIMEDRECEIVE: usize = 276; pub const MQ_TIMEDSEND: usize = 275; pub const MQ_UNLINK: usize = 274; pub const MREMAP: usize = 250; pub const MSYNC: usize = 65; pub const MUNLOCK: usize = 238; pub const MUNLOCKALL: usize = 240; pub const MUNMAP: usize = 73; pub const NAME_TO_HANDLE_AT: usize = 332; pub const NANOSLEEP: usize = 249; pub const NFSSERVCTL: usize = 254; pub const NICE: usize = 34; pub const OLDLSTAT: usize = 202; pub const OPEN: usize = 5; pub const OPEN_BY_HANDLE_AT: usize = 333; pub const OPENAT: usize = 284; pub const PAUSE: usize = 29; pub const PCICONFIG_READ: usize = 148; pub const PCICONFIG_WRITE: usize = 149; pub const PERF_EVENT_OPEN: usize = 327; pub const PERFCTR: usize = 18; pub const PERSONALITY: usize = 191; pub const PIPE: usize = 42; pub const PIPE2: usize = 321; pub const PIVOT_ROOT: usize = 146; pub const POLL: usize = 153; pub const PPOLL: usize = 298; pub const PRCTL: usize = 147; pub const PREAD64: usize = 67; pub const PREADV: usize = 324; pub const PREADV2: usize = 358; pub const PRLIMIT64: usize = 331; pub const PROCESS_VM_READV: usize = 338; pub const PROCESS_VM_WRITEV: usize = 339; pub const PSELECT6: usize = 297; pub const PTRACE: usize = 26; pub const PWRITE64: usize = 68; pub const PWRITEV: usize = 325; pub const PWRITEV2: usize = 359; pub const QUERY_MODULE: usize = 184; pub const QUOTACTL: usize = 165; pub const READ: usize = 3; pub const READAHEAD: usize = 205; pub const READDIR: usize = 204; pub const READLINK: usize = 58; pub const READLINKAT: usize = 294; pub const READV: usize = 120; pub const REBOOT: usize = 55; pub const RECVFROM: usize = 125; pub const RECVMMSG: usize = 328; pub const RECVMSG: usize = 113; pub const REMAP_FILE_PAGES: usize = 192; pub const REMOVEXATTR: usize = 181; pub const RENAME: usize = 128; pub const RENAMEAT: usize = 291; pub const RENAMEAT2: usize = 345; pub const REQUEST_KEY: usize = 282; pub const RESTART_SYSCALL: usize = 0; pub const RMDIR: usize = 137; pub const RT_SIGACTION: usize = 102; pub const RT_SIGPENDING: usize = 104; pub const RT_SIGPROCMASK: usize = 103; pub const RT_SIGQUEUEINFO: usize = 106; pub const RT_SIGRETURN: usize = 101; pub const RT_SIGSUSPEND: usize = 107; pub const RT_SIGTIMEDWAIT: usize = 105; pub const RT_TGSIGQUEUEINFO: usize = 326; pub const SCHED_GET_AFFINITY: usize = 161; pub const SCHED_GET_PRIORITY_MAX: usize = 246; pub const SCHED_GET_PRIORITY_MIN: usize = 247; pub const SCHED_GETAFFINITY: usize = 260; pub const SCHED_GETATTR: usize = 344; pub const SCHED_GETPARAM: usize = 242; pub const SCHED_GETSCHEDULER: usize = 244; pub const SCHED_RR_GET_INTERVAL: usize = 248; pub const SCHED_SET_AFFINITY: usize = 160; pub const SCHED_SETAFFINITY: usize = 261; pub const SCHED_SETATTR: usize = 343; pub const SCHED_SETPARAM: usize = 241; pub const SCHED_SETSCHEDULER: usize = 243; pub const SCHED_YIELD: usize = 245; pub const SECCOMP: usize = 346; pub const SELECT: usize = 93; pub const SENDFILE: usize = 39; pub const SENDFILE64: usize = 140; pub const SENDMMSG: usize = 336; pub const SENDMSG: usize = 114; pub const SENDTO: usize = 133; pub const SET_MEMPOLICY: usize = 305; pub const SET_ROBUST_LIST: usize = 300; pub const SET_TID_ADDRESS: usize = 166; pub const SETDOMAINNAME: usize = 163; pub const SETFSGID: usize = 229; pub const SETFSGID32: usize = 94; pub const SETFSUID: usize = 228; pub const SETFSUID32: usize = 91; pub const SETGID: usize = 46; pub const SETGID32: usize = 89; pub const SETGROUPS: usize = 80; pub const SETGROUPS32: usize = 82; pub const SETHOSTNAME: usize = 88; pub const SETITIMER: usize = 83; pub const SETNS: usize = 337; pub const SETPGID: usize = 185; pub const SETPRIORITY: usize = 96; pub const SETREGID: usize = 127; pub const SETREGID32: usize = 112; pub const SETRESGID32: usize = 110; pub const SETRESUID32: usize = 108; pub const SETREUID: usize = 126; pub const SETREUID32: usize = 72; pub const SETRLIMIT: usize = 145; pub const SETSID: usize = 175; pub const SETSOCKOPT: usize = 355; pub const SETTIMEOFDAY: usize = 122; pub const SETUID: usize = 23; pub const SETUID32: usize = 87; pub const SETXATTR: usize = 169; pub const SGETMASK: usize = 199; pub const SHUTDOWN: usize = 134; pub const SIGACTION: usize = 198; pub const SIGALTSTACK: usize = 28; pub const SIGNAL: usize = 48; pub const SIGNALFD: usize = 311; pub const SIGNALFD4: usize = 317; pub const SIGPENDING: usize = 183; pub const SIGPROCMASK: usize = 220; pub const SIGRETURN: usize = 216; pub const SIGSUSPEND: usize = 201; pub const SOCKET: usize = 97; pub const SOCKETCALL: usize = 206; pub const SOCKETPAIR: usize = 135; pub const SPLICE: usize = 232; pub const SSETMASK: usize = 200; pub const STAT: usize = 38; pub const STAT64: usize = 139; pub const STATFS: usize = 157; pub const STATFS64: usize = 234; pub const STATX: usize = 360; pub const STIME: usize = 233; pub const SWAPOFF: usize = 213; pub const SWAPON: usize = 85; pub const SYMLINK: usize = 57; pub const SYMLINKAT: usize = 293; pub const SYNC: usize = 36; pub const SYNC_FILE_RANGE: usize = 255; pub const SYNCFS: usize = 335; pub const SYSFS: usize = 226; pub const SYSINFO: usize = 214; pub const SYSLOG: usize = 207; pub const TEE: usize = 280; pub const TGKILL: usize = 211; pub const TIME: usize = 231; pub const TIMER_CREATE: usize = 266; pub const TIMER_DELETE: usize = 265; pub const TIMER_GETOVERRUN: usize = 264; pub const TIMER_GETTIME: usize = 263; pub const TIMER_SETTIME: usize = 262; pub const TIMERFD_CREATE: usize = 312; pub const TIMERFD_GETTIME: usize = 316; pub const TIMERFD_SETTIME: usize = 315; pub const TIMES: usize = 43; pub const TKILL: usize = 187; pub const TRUNCATE: usize = 129; pub const TRUNCATE64: usize = 77; pub const UMASK: usize = 60; pub const UMOUNT: usize = 159; pub const UMOUNT2: usize = 45; pub const UNAME: usize = 189; pub const UNLINK: usize = 10; pub const UNLINKAT: usize = 290; pub const UNSHARE: usize = 299; pub const USELIB: usize = 203; pub const USERFAULTFD: usize = 352; pub const USTAT: usize = 168; pub const UTIME: usize = 30; pub const UTIMENSAT: usize = 310; pub const UTIMES: usize = 138; pub const VFORK: usize = 66; pub const VHANGUP: usize = 76; pub const VMSPLICE: usize = 25; pub const WAIT4: usize = 7; pub const WAITID: usize = 279; pub const WAITPID: usize = 212; pub const WRITE: usize = 4; pub const WRITEV: usize = 121; sc-0.2.7/src/platform/linux-x86/mod.rs000064400000000000000000000100330072674642500156060ustar 00000000000000// Copyright 2014 The syscall.rs Project Developers. See the // COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Veecxon 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except accoebxng to those terms. //! This library was built for x86 Linux. pub mod nr; #[inline(always)] pub unsafe fn syscall0(mut n: usize) -> usize { llvm_asm!("int $$0x80" : "+{eax}"(n) : : "memory" "cc" : "volatile"); n } #[inline(always)] pub unsafe fn syscall1(mut n: usize, a1: usize) -> usize { llvm_asm!("int $$0x80" : "+{eax}"(n) : "{ebx}"(a1) : "memory" "cc" : "volatile"); n } #[inline(always)] pub unsafe fn syscall2(mut n: usize, a1: usize, a2: usize) -> usize { llvm_asm!("int $$0x80" : "+{eax}"(n) : "{ebx}"(a1) "{ecx}"(a2) : "memory" "cc" : "volatile"); n } #[inline(always)] pub unsafe fn syscall3(mut n: usize, a1: usize, a2: usize, a3: usize) -> usize { llvm_asm!("int $$0x80" : "+{eax}"(n) : "{ebx}"(a1) "{ecx}"(a2) "{edx}"(a3) : "memory" "cc" : "volatile"); n } #[inline(always)] pub unsafe fn syscall4(mut n: usize, a1: usize, a2: usize, a3: usize, a4: usize) -> usize { llvm_asm!("int $$0x80" : "+{eax}"(n) : "{ebx}"(a1) "{ecx}"(a2) "{edx}"(a3) "{esi}"(a4) : "memory" "cc" : "volatile"); n } #[inline(always)] pub unsafe fn syscall5(mut n: usize, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize) -> usize { llvm_asm!("int $$0x80" : "+{eax}"(n) : "{ebx}"(a1) "{ecx}"(a2) "{edx}"(a3) "{esi}"(a4) "{edi}"(a5) : "memory" "cc" : "volatile"); n } #[inline(always)] pub unsafe fn syscall6(n: usize, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize, a6: usize) -> usize { let ret: usize; // XXX: this fails when building without optimizations: // // llvm_asm!("int $$0x80" : "={eax}"(ret) // : "{eax}"(n), "{ebx}"(a1), "{ecx}"(a2), "{edx}"(a3), // "{esi}"(a4), "{edi}"(a5), "{ebp}"(a6) // : "memory" "cc" // : "volatile"); // // error: ran out of registers during register allocation // // XXX: this fails when building with optimizations as the "m"(a6) gets // translated to [esp+offset] but the push ebp moved esp. // // llvm_asm!("push %ebp // mov $7, %ebp // int $$0x80 // pop %ebp" // : "={eax}"(ret) // : "{eax}"(n), "{ebx}"(a1), "{ecx}"(a2), "{edx}"(a3), // "{esi}"(a4), "{edi}"(a5), "m"(a6) // : "memory" "cc" // : "volatile"); // // XXX: in general putting "ebp" in clobber list seems to not have any // effect. // // As workaround only use a single input operand with known memory layout // and manually save restore ebp. let args = [n, a1, a2, a3, a4, a5, a6]; llvm_asm!("push %ebp movl 24(%eax), %ebp movl 20(%eax), %edi movl 16(%eax), %esi movl 12(%eax), %edx movl 8(%eax), %ecx movl 4(%eax), %ebx movl 0(%eax), %eax int $$0x80 pop %ebp" : "={eax}"(ret) : "{eax}"(&args) : "ebx" "ecx" "edx" "esi" "edi" "ebp" "memory" "cc" : "volatile"); ret } sc-0.2.7/src/platform/linux-x86/nr.rs000064400000000000000000000345010072674642500154540ustar 00000000000000/* automatically generated by nr_from_src.py */ pub const _LLSEEK: usize = 140; pub const _NEWSELECT: usize = 142; pub const _SYSCTL: usize = 149; pub const ACCEPT4: usize = 364; pub const ACCESS: usize = 33; pub const ACCT: usize = 51; pub const ADD_KEY: usize = 286; pub const ADJTIMEX: usize = 124; pub const AFS_SYSCALL: usize = 137; pub const ALARM: usize = 27; pub const ARCH_PRCTL: usize = 384; pub const BDFLUSH: usize = 134; pub const BIND: usize = 361; pub const BPF: usize = 357; pub const BREAK: usize = 17; pub const BRK: usize = 45; pub const CAPGET: usize = 184; pub const CAPSET: usize = 185; pub const CHDIR: usize = 12; pub const CHMOD: usize = 15; pub const CHOWN: usize = 182; pub const CHOWN32: usize = 212; pub const CHROOT: usize = 61; pub const CLOCK_ADJTIME: usize = 343; pub const CLOCK_ADJTIME64: usize = 405; pub const CLOCK_GETRES: usize = 266; pub const CLOCK_GETRES_TIME64: usize = 406; pub const CLOCK_GETTIME: usize = 265; pub const CLOCK_GETTIME64: usize = 403; pub const CLOCK_NANOSLEEP: usize = 267; pub const CLOCK_NANOSLEEP_TIME64: usize = 407; pub const CLOCK_SETTIME: usize = 264; pub const CLOCK_SETTIME64: usize = 404; pub const CLONE: usize = 120; pub const CLONE3: usize = 435; pub const CLOSE: usize = 6; pub const CLOSE_RANGE: usize = 436; pub const CONNECT: usize = 362; pub const COPY_FILE_RANGE: usize = 377; pub const CREAT: usize = 8; pub const CREATE_MODULE: usize = 127; pub const DELETE_MODULE: usize = 129; pub const DUP: usize = 41; pub const DUP2: usize = 63; pub const DUP3: usize = 330; pub const EPOLL_CREATE: usize = 254; pub const EPOLL_CREATE1: usize = 329; pub const EPOLL_CTL: usize = 255; pub const EPOLL_PWAIT: usize = 319; pub const EPOLL_PWAIT2: usize = 441; pub const EPOLL_WAIT: usize = 256; pub const EVENTFD: usize = 323; pub const EVENTFD2: usize = 328; pub const EXECVE: usize = 11; pub const EXECVEAT: usize = 358; pub const EXIT: usize = 1; pub const EXIT_GROUP: usize = 252; pub const FACCESSAT: usize = 307; pub const FACCESSAT2: usize = 439; pub const FADVISE64: usize = 250; pub const FADVISE64_64: usize = 272; pub const FALLOCATE: usize = 324; pub const FANOTIFY_INIT: usize = 338; pub const FANOTIFY_MARK: usize = 339; pub const FCHDIR: usize = 133; pub const FCHMOD: usize = 94; pub const FCHMODAT: usize = 306; pub const FCHOWN: usize = 95; pub const FCHOWN32: usize = 207; pub const FCHOWNAT: usize = 298; pub const FCNTL: usize = 55; pub const FCNTL64: usize = 221; pub const FDATASYNC: usize = 148; pub const FGETXATTR: usize = 231; pub const FINIT_MODULE: usize = 350; pub const FLISTXATTR: usize = 234; pub const FLOCK: usize = 143; pub const FORK: usize = 2; pub const FREMOVEXATTR: usize = 237; pub const FSCONFIG: usize = 431; pub const FSETXATTR: usize = 228; pub const FSMOUNT: usize = 432; pub const FSOPEN: usize = 430; pub const FSPICK: usize = 433; pub const FSTAT: usize = 108; pub const FSTAT64: usize = 197; pub const FSTATAT64: usize = 300; pub const FSTATFS: usize = 100; pub const FSTATFS64: usize = 269; pub const FSYNC: usize = 118; pub const FTIME: usize = 35; pub const FTRUNCATE: usize = 93; pub const FTRUNCATE64: usize = 194; pub const FUTEX: usize = 240; pub const FUTEX_TIME64: usize = 422; pub const FUTIMESAT: usize = 299; pub const GET_KERNEL_SYMS: usize = 130; pub const GET_MEMPOLICY: usize = 275; pub const GET_ROBUST_LIST: usize = 312; pub const GET_THREAD_AREA: usize = 244; pub const GETCPU: usize = 318; pub const GETCWD: usize = 183; pub const GETDENTS: usize = 141; pub const GETDENTS64: usize = 220; pub const GETEGID: usize = 50; pub const GETEGID32: usize = 202; pub const GETEUID: usize = 49; pub const GETEUID32: usize = 201; pub const GETGID: usize = 47; pub const GETGID32: usize = 200; pub const GETGROUPS: usize = 80; pub const GETGROUPS32: usize = 205; pub const GETITIMER: usize = 105; pub const GETPEERNAME: usize = 368; pub const GETPGID: usize = 132; pub const GETPGRP: usize = 65; pub const GETPID: usize = 20; pub const GETPMSG: usize = 188; pub const GETPPID: usize = 64; pub const GETPRIORITY: usize = 96; pub const GETRANDOM: usize = 355; pub const GETRESGID: usize = 171; pub const GETRESGID32: usize = 211; pub const GETRESUID: usize = 165; pub const GETRESUID32: usize = 209; pub const GETRLIMIT: usize = 76; pub const GETRUSAGE: usize = 77; pub const GETSID: usize = 147; pub const GETSOCKNAME: usize = 367; pub const GETSOCKOPT: usize = 365; pub const GETTID: usize = 224; pub const GETTIMEOFDAY: usize = 78; pub const GETUID: usize = 24; pub const GETUID32: usize = 199; pub const GETXATTR: usize = 229; pub const GTTY: usize = 32; pub const IDLE: usize = 112; pub const INIT_MODULE: usize = 128; pub const INOTIFY_ADD_WATCH: usize = 292; pub const INOTIFY_INIT: usize = 291; pub const INOTIFY_INIT1: usize = 332; pub const INOTIFY_RM_WATCH: usize = 293; pub const IO_CANCEL: usize = 249; pub const IO_DESTROY: usize = 246; pub const IO_GETEVENTS: usize = 247; pub const IO_PGETEVENTS: usize = 385; pub const IO_PGETEVENTS_TIME64: usize = 416; pub const IO_SETUP: usize = 245; pub const IO_SUBMIT: usize = 248; pub const IO_URING_ENTER: usize = 426; pub const IO_URING_REGISTER: usize = 427; pub const IO_URING_SETUP: usize = 425; pub const IOCTL: usize = 54; pub const IOPERM: usize = 101; pub const IOPL: usize = 110; pub const IOPRIO_GET: usize = 290; pub const IOPRIO_SET: usize = 289; pub const IPC: usize = 117; pub const KCMP: usize = 349; pub const KEXEC_LOAD: usize = 283; pub const KEYCTL: usize = 288; pub const KILL: usize = 37; pub const LCHOWN: usize = 16; pub const LCHOWN32: usize = 198; pub const LGETXATTR: usize = 230; pub const LINK: usize = 9; pub const LINKAT: usize = 303; pub const LISTEN: usize = 363; pub const LISTXATTR: usize = 232; pub const LLISTXATTR: usize = 233; pub const LOCK: usize = 53; pub const LOOKUP_DCOOKIE: usize = 253; pub const LREMOVEXATTR: usize = 236; pub const LSEEK: usize = 19; pub const LSETXATTR: usize = 227; pub const LSTAT: usize = 107; pub const LSTAT64: usize = 196; pub const MADVISE: usize = 219; pub const MBIND: usize = 274; pub const MEMBARRIER: usize = 375; pub const MEMFD_CREATE: usize = 356; pub const MIGRATE_PAGES: usize = 294; pub const MINCORE: usize = 218; pub const MKDIR: usize = 39; pub const MKDIRAT: usize = 296; pub const MKNOD: usize = 14; pub const MKNODAT: usize = 297; pub const MLOCK: usize = 150; pub const MLOCK2: usize = 376; pub const MLOCKALL: usize = 152; pub const MMAP: usize = 90; pub const MMAP2: usize = 192; pub const MODIFY_LDT: usize = 123; pub const MOUNT: usize = 21; pub const MOUNT_SETATTR: usize = 442; pub const MOVE_MOUNT: usize = 429; pub const MOVE_PAGES: usize = 317; pub const MPROTECT: usize = 125; pub const MPX: usize = 56; pub const MQ_GETSETATTR: usize = 282; pub const MQ_NOTIFY: usize = 281; pub const MQ_OPEN: usize = 277; pub const MQ_TIMEDRECEIVE: usize = 280; pub const MQ_TIMEDRECEIVE_TIME64: usize = 419; pub const MQ_TIMEDSEND: usize = 279; pub const MQ_TIMEDSEND_TIME64: usize = 418; pub const MQ_UNLINK: usize = 278; pub const MREMAP: usize = 163; pub const MSGCTL: usize = 402; pub const MSGGET: usize = 399; pub const MSGRCV: usize = 401; pub const MSGSND: usize = 400; pub const MSYNC: usize = 144; pub const MUNLOCK: usize = 151; pub const MUNLOCKALL: usize = 153; pub const MUNMAP: usize = 91; pub const NAME_TO_HANDLE_AT: usize = 341; pub const NANOSLEEP: usize = 162; pub const NFSSERVCTL: usize = 169; pub const NICE: usize = 34; pub const OLDFSTAT: usize = 28; pub const OLDLSTAT: usize = 84; pub const OLDOLDUNAME: usize = 59; pub const OLDSTAT: usize = 18; pub const OLDUNAME: usize = 109; pub const OPEN: usize = 5; pub const OPEN_BY_HANDLE_AT: usize = 342; pub const OPEN_TREE: usize = 428; pub const OPENAT: usize = 295; pub const OPENAT2: usize = 437; pub const PAUSE: usize = 29; pub const PERF_EVENT_OPEN: usize = 336; pub const PERSONALITY: usize = 136; pub const PIDFD_GETFD: usize = 438; pub const PIDFD_OPEN: usize = 434; pub const PIDFD_SEND_SIGNAL: usize = 424; pub const PIPE: usize = 42; pub const PIPE2: usize = 331; pub const PIVOT_ROOT: usize = 217; pub const PKEY_ALLOC: usize = 381; pub const PKEY_FREE: usize = 382; pub const PKEY_MPROTECT: usize = 380; pub const POLL: usize = 168; pub const PPOLL: usize = 309; pub const PPOLL_TIME64: usize = 414; pub const PRCTL: usize = 172; pub const PREAD64: usize = 180; pub const PREADV: usize = 333; pub const PREADV2: usize = 378; pub const PRLIMIT64: usize = 340; pub const PROCESS_MADVISE: usize = 440; pub const PROCESS_VM_READV: usize = 347; pub const PROCESS_VM_WRITEV: usize = 348; pub const PROF: usize = 44; pub const PROFIL: usize = 98; pub const PSELECT6: usize = 308; pub const PSELECT6_TIME64: usize = 413; pub const PTRACE: usize = 26; pub const PUTPMSG: usize = 189; pub const PWRITE64: usize = 181; pub const PWRITEV: usize = 334; pub const PWRITEV2: usize = 379; pub const QUERY_MODULE: usize = 167; pub const QUOTACTL: usize = 131; pub const READ: usize = 3; pub const READAHEAD: usize = 225; pub const READDIR: usize = 89; pub const READLINK: usize = 85; pub const READLINKAT: usize = 305; pub const READV: usize = 145; pub const REBOOT: usize = 88; pub const RECVFROM: usize = 371; pub const RECVMMSG: usize = 337; pub const RECVMMSG_TIME64: usize = 417; pub const RECVMSG: usize = 372; pub const REMAP_FILE_PAGES: usize = 257; pub const REMOVEXATTR: usize = 235; pub const RENAME: usize = 38; pub const RENAMEAT: usize = 302; pub const RENAMEAT2: usize = 353; pub const REQUEST_KEY: usize = 287; pub const RESTART_SYSCALL: usize = 0; pub const RMDIR: usize = 40; pub const RSEQ: usize = 386; pub const RT_SIGACTION: usize = 174; pub const RT_SIGPENDING: usize = 176; pub const RT_SIGPROCMASK: usize = 175; pub const RT_SIGQUEUEINFO: usize = 178; pub const RT_SIGRETURN: usize = 173; pub const RT_SIGSUSPEND: usize = 179; pub const RT_SIGTIMEDWAIT: usize = 177; pub const RT_SIGTIMEDWAIT_TIME64: usize = 421; pub const RT_TGSIGQUEUEINFO: usize = 335; pub const SCHED_GET_PRIORITY_MAX: usize = 159; pub const SCHED_GET_PRIORITY_MIN: usize = 160; pub const SCHED_GETAFFINITY: usize = 242; pub const SCHED_GETATTR: usize = 352; pub const SCHED_GETPARAM: usize = 155; pub const SCHED_GETSCHEDULER: usize = 157; pub const SCHED_RR_GET_INTERVAL: usize = 161; pub const SCHED_RR_GET_INTERVAL_TIME64: usize = 423; pub const SCHED_SETAFFINITY: usize = 241; pub const SCHED_SETATTR: usize = 351; pub const SCHED_SETPARAM: usize = 154; pub const SCHED_SETSCHEDULER: usize = 156; pub const SCHED_YIELD: usize = 158; pub const SECCOMP: usize = 354; pub const SELECT: usize = 82; pub const SEMCTL: usize = 394; pub const SEMGET: usize = 393; pub const SEMTIMEDOP_TIME64: usize = 420; pub const SENDFILE: usize = 187; pub const SENDFILE64: usize = 239; pub const SENDMMSG: usize = 345; pub const SENDMSG: usize = 370; pub const SENDTO: usize = 369; pub const SET_MEMPOLICY: usize = 276; pub const SET_ROBUST_LIST: usize = 311; pub const SET_THREAD_AREA: usize = 243; pub const SET_TID_ADDRESS: usize = 258; pub const SETDOMAINNAME: usize = 121; pub const SETFSGID: usize = 139; pub const SETFSGID32: usize = 216; pub const SETFSUID: usize = 138; pub const SETFSUID32: usize = 215; pub const SETGID: usize = 46; pub const SETGID32: usize = 214; pub const SETGROUPS: usize = 81; pub const SETGROUPS32: usize = 206; pub const SETHOSTNAME: usize = 74; pub const SETITIMER: usize = 104; pub const SETNS: usize = 346; pub const SETPGID: usize = 57; pub const SETPRIORITY: usize = 97; pub const SETREGID: usize = 71; pub const SETREGID32: usize = 204; pub const SETRESGID: usize = 170; pub const SETRESGID32: usize = 210; pub const SETRESUID: usize = 164; pub const SETRESUID32: usize = 208; pub const SETREUID: usize = 70; pub const SETREUID32: usize = 203; pub const SETRLIMIT: usize = 75; pub const SETSID: usize = 66; pub const SETSOCKOPT: usize = 366; pub const SETTIMEOFDAY: usize = 79; pub const SETUID: usize = 23; pub const SETUID32: usize = 213; pub const SETXATTR: usize = 226; pub const SGETMASK: usize = 68; pub const SHMAT: usize = 397; pub const SHMCTL: usize = 396; pub const SHMDT: usize = 398; pub const SHMGET: usize = 395; pub const SHUTDOWN: usize = 373; pub const SIGACTION: usize = 67; pub const SIGALTSTACK: usize = 186; pub const SIGNAL: usize = 48; pub const SIGNALFD: usize = 321; pub const SIGNALFD4: usize = 327; pub const SIGPENDING: usize = 73; pub const SIGPROCMASK: usize = 126; pub const SIGRETURN: usize = 119; pub const SIGSUSPEND: usize = 72; pub const SOCKET: usize = 359; pub const SOCKETCALL: usize = 102; pub const SOCKETPAIR: usize = 360; pub const SPLICE: usize = 313; pub const SSETMASK: usize = 69; pub const STAT: usize = 106; pub const STAT64: usize = 195; pub const STATFS: usize = 99; pub const STATFS64: usize = 268; pub const STATX: usize = 383; pub const STIME: usize = 25; pub const STTY: usize = 31; pub const SWAPOFF: usize = 115; pub const SWAPON: usize = 87; pub const SYMLINK: usize = 83; pub const SYMLINKAT: usize = 304; pub const SYNC: usize = 36; pub const SYNC_FILE_RANGE: usize = 314; pub const SYNCFS: usize = 344; pub const SYSFS: usize = 135; pub const SYSINFO: usize = 116; pub const SYSLOG: usize = 103; pub const TEE: usize = 315; pub const TGKILL: usize = 270; pub const TIME: usize = 13; pub const TIMER_CREATE: usize = 259; pub const TIMER_DELETE: usize = 263; pub const TIMER_GETOVERRUN: usize = 262; pub const TIMER_GETTIME: usize = 261; pub const TIMER_GETTIME64: usize = 408; pub const TIMER_SETTIME: usize = 260; pub const TIMER_SETTIME64: usize = 409; pub const TIMERFD_CREATE: usize = 322; pub const TIMERFD_GETTIME: usize = 326; pub const TIMERFD_GETTIME64: usize = 410; pub const TIMERFD_SETTIME: usize = 325; pub const TIMERFD_SETTIME64: usize = 411; pub const TIMES: usize = 43; pub const TKILL: usize = 238; pub const TRUNCATE: usize = 92; pub const TRUNCATE64: usize = 193; pub const UGETRLIMIT: usize = 191; pub const ULIMIT: usize = 58; pub const UMASK: usize = 60; pub const UMOUNT: usize = 22; pub const UMOUNT2: usize = 52; pub const UNAME: usize = 122; pub const UNLINK: usize = 10; pub const UNLINKAT: usize = 301; pub const UNSHARE: usize = 310; pub const USELIB: usize = 86; pub const USERFAULTFD: usize = 374; pub const USTAT: usize = 62; pub const UTIME: usize = 30; pub const UTIMENSAT: usize = 320; pub const UTIMENSAT_TIME64: usize = 412; pub const UTIMES: usize = 271; pub const VFORK: usize = 190; pub const VHANGUP: usize = 111; pub const VM86: usize = 166; pub const VM86OLD: usize = 113; pub const VMSPLICE: usize = 316; pub const VSERVER: usize = 273; pub const WAIT4: usize = 114; pub const WAITID: usize = 284; pub const WAITPID: usize = 7; pub const WRITE: usize = 4; pub const WRITEV: usize = 146; sc-0.2.7/src/platform/linux-x86_64/mod.rs000064400000000000000000000057530072674642500161340ustar 00000000000000// Copyright 2014 The syscall.rs Project Developers. See the // COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. //! This library was built for x86-64 Linux. use core::arch::asm; pub mod nr; #[inline(always)] pub unsafe fn syscall0(mut n: usize) -> usize { asm!( "syscall", inout("rax") n, out("rcx") _, out("r11") _, options(nostack), ); n } #[inline(always)] pub unsafe fn syscall1(mut n: usize, a1: usize) -> usize { asm!( "syscall", inout("rax") n, in("rdi") a1, out("rcx") _, out("r11") _, options(nostack), ); n } #[inline(always)] pub unsafe fn syscall2(mut n: usize, a1: usize, a2: usize) -> usize { asm!( "syscall", inout("rax") n, in("rdi") a1, in("rsi") a2, out("rcx") _, out("r11") _, options(nostack), ); n } #[inline(always)] pub unsafe fn syscall3(mut n: usize, a1: usize, a2: usize, a3: usize) -> usize { asm!( "syscall", inout("rax") n, in("rdi") a1, in("rsi") a2, in("rdx") a3, out("rcx") _, out("r11") _, options(nostack), ); n } #[inline(always)] pub unsafe fn syscall4(mut n: usize, a1: usize, a2: usize, a3: usize, a4: usize) -> usize { asm!( "syscall", inout("rax") n, in("rdi") a1, in("rsi") a2, in("rdx") a3, in("r10") a4, out("rcx") _, out("r11") _, options(nostack), ); n } #[inline(always)] pub unsafe fn syscall5(mut n: usize, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize) -> usize { asm!( "syscall", inout("rax") n, in("rdi") a1, in("rsi") a2, in("rdx") a3, in("r10") a4, in("r8") a5, out("rcx") _, out("r11") _, options(nostack), ); n } #[inline(always)] pub unsafe fn syscall6(mut n: usize, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize, a6: usize) -> usize { asm!( "syscall", inout("rax") n, in("rdi") a1, in("rsi") a2, in("rdx") a3, in("r10") a4, in("r8") a5, in("r9") a6, out("rcx") _, out("r11") _, options(nostack), ); n } sc-0.2.7/src/platform/linux-x86_64/nr.rs000064400000000000000000000272220072674642500157670ustar 00000000000000/* automatically generated by nr_from_src.py */ pub const _SYSCTL: usize = 156; pub const ACCEPT: usize = 43; pub const ACCEPT4: usize = 288; pub const ACCESS: usize = 21; pub const ACCT: usize = 163; pub const ADD_KEY: usize = 248; pub const ADJTIMEX: usize = 159; pub const AFS_SYSCALL: usize = 183; pub const ALARM: usize = 37; pub const ARCH_PRCTL: usize = 158; pub const BIND: usize = 49; pub const BPF: usize = 321; pub const BRK: usize = 12; pub const CAPGET: usize = 125; pub const CAPSET: usize = 126; pub const CHDIR: usize = 80; pub const CHMOD: usize = 90; pub const CHOWN: usize = 92; pub const CHROOT: usize = 161; pub const CLOCK_ADJTIME: usize = 305; pub const CLOCK_GETRES: usize = 229; pub const CLOCK_GETTIME: usize = 228; pub const CLOCK_NANOSLEEP: usize = 230; pub const CLOCK_SETTIME: usize = 227; pub const CLONE: usize = 56; pub const CLONE3: usize = 435; pub const CLOSE: usize = 3; pub const CLOSE_RANGE: usize = 436; pub const CONNECT: usize = 42; pub const COPY_FILE_RANGE: usize = 326; pub const CREAT: usize = 85; pub const CREATE_MODULE: usize = 174; pub const DELETE_MODULE: usize = 176; pub const DUP: usize = 32; pub const DUP2: usize = 33; pub const DUP3: usize = 292; pub const EPOLL_CREATE: usize = 213; pub const EPOLL_CREATE1: usize = 291; pub const EPOLL_CTL: usize = 233; pub const EPOLL_CTL_OLD: usize = 214; pub const EPOLL_PWAIT: usize = 281; pub const EPOLL_PWAIT2: usize = 441; pub const EPOLL_WAIT: usize = 232; pub const EPOLL_WAIT_OLD: usize = 215; pub const EVENTFD: usize = 284; pub const EVENTFD2: usize = 290; pub const EXECVE: usize = 59; pub const EXECVEAT: usize = 322; pub const EXIT: usize = 60; pub const EXIT_GROUP: usize = 231; pub const FACCESSAT: usize = 269; pub const FACCESSAT2: usize = 439; pub const FADVISE64: usize = 221; pub const FALLOCATE: usize = 285; pub const FANOTIFY_INIT: usize = 300; pub const FANOTIFY_MARK: usize = 301; pub const FCHDIR: usize = 81; pub const FCHMOD: usize = 91; pub const FCHMODAT: usize = 268; pub const FCHOWN: usize = 93; pub const FCHOWNAT: usize = 260; pub const FCNTL: usize = 72; pub const FDATASYNC: usize = 75; pub const FGETXATTR: usize = 193; pub const FINIT_MODULE: usize = 313; pub const FLISTXATTR: usize = 196; pub const FLOCK: usize = 73; pub const FORK: usize = 57; pub const FREMOVEXATTR: usize = 199; pub const FSCONFIG: usize = 431; pub const FSETXATTR: usize = 190; pub const FSMOUNT: usize = 432; pub const FSOPEN: usize = 430; pub const FSPICK: usize = 433; pub const FSTAT: usize = 5; pub const FSTATFS: usize = 138; pub const FSYNC: usize = 74; pub const FTRUNCATE: usize = 77; pub const FUTEX: usize = 202; pub const FUTIMESAT: usize = 261; pub const GET_KERNEL_SYMS: usize = 177; pub const GET_MEMPOLICY: usize = 239; pub const GET_ROBUST_LIST: usize = 274; pub const GET_THREAD_AREA: usize = 211; pub const GETCPU: usize = 309; pub const GETCWD: usize = 79; pub const GETDENTS: usize = 78; pub const GETDENTS64: usize = 217; pub const GETEGID: usize = 108; pub const GETEUID: usize = 107; pub const GETGID: usize = 104; pub const GETGROUPS: usize = 115; pub const GETITIMER: usize = 36; pub const GETPEERNAME: usize = 52; pub const GETPGID: usize = 121; pub const GETPGRP: usize = 111; pub const GETPID: usize = 39; pub const GETPMSG: usize = 181; pub const GETPPID: usize = 110; pub const GETPRIORITY: usize = 140; pub const GETRANDOM: usize = 318; pub const GETRESGID: usize = 120; pub const GETRESUID: usize = 118; pub const GETRLIMIT: usize = 97; pub const GETRUSAGE: usize = 98; pub const GETSID: usize = 124; pub const GETSOCKNAME: usize = 51; pub const GETSOCKOPT: usize = 55; pub const GETTID: usize = 186; pub const GETTIMEOFDAY: usize = 96; pub const GETUID: usize = 102; pub const GETXATTR: usize = 191; pub const INIT_MODULE: usize = 175; pub const INOTIFY_ADD_WATCH: usize = 254; pub const INOTIFY_INIT: usize = 253; pub const INOTIFY_INIT1: usize = 294; pub const INOTIFY_RM_WATCH: usize = 255; pub const IO_CANCEL: usize = 210; pub const IO_DESTROY: usize = 207; pub const IO_GETEVENTS: usize = 208; pub const IO_PGETEVENTS: usize = 333; pub const IO_SETUP: usize = 206; pub const IO_SUBMIT: usize = 209; pub const IO_URING_ENTER: usize = 426; pub const IO_URING_REGISTER: usize = 427; pub const IO_URING_SETUP: usize = 425; pub const IOCTL: usize = 16; pub const IOPERM: usize = 173; pub const IOPL: usize = 172; pub const IOPRIO_GET: usize = 252; pub const IOPRIO_SET: usize = 251; pub const KCMP: usize = 312; pub const KEXEC_FILE_LOAD: usize = 320; pub const KEXEC_LOAD: usize = 246; pub const KEYCTL: usize = 250; pub const KILL: usize = 62; pub const LCHOWN: usize = 94; pub const LGETXATTR: usize = 192; pub const LINK: usize = 86; pub const LINKAT: usize = 265; pub const LISTEN: usize = 50; pub const LISTXATTR: usize = 194; pub const LLISTXATTR: usize = 195; pub const LOOKUP_DCOOKIE: usize = 212; pub const LREMOVEXATTR: usize = 198; pub const LSEEK: usize = 8; pub const LSETXATTR: usize = 189; pub const LSTAT: usize = 6; pub const MADVISE: usize = 28; pub const MBIND: usize = 237; pub const MEMBARRIER: usize = 324; pub const MEMFD_CREATE: usize = 319; pub const MIGRATE_PAGES: usize = 256; pub const MINCORE: usize = 27; pub const MKDIR: usize = 83; pub const MKDIRAT: usize = 258; pub const MKNOD: usize = 133; pub const MKNODAT: usize = 259; pub const MLOCK: usize = 149; pub const MLOCK2: usize = 325; pub const MLOCKALL: usize = 151; pub const MMAP: usize = 9; pub const MODIFY_LDT: usize = 154; pub const MOUNT: usize = 165; pub const MOUNT_SETATTR: usize = 442; pub const MOVE_MOUNT: usize = 429; pub const MOVE_PAGES: usize = 279; pub const MPROTECT: usize = 10; pub const MQ_GETSETATTR: usize = 245; pub const MQ_NOTIFY: usize = 244; pub const MQ_OPEN: usize = 240; pub const MQ_TIMEDRECEIVE: usize = 243; pub const MQ_TIMEDSEND: usize = 242; pub const MQ_UNLINK: usize = 241; pub const MREMAP: usize = 25; pub const MSGCTL: usize = 71; pub const MSGGET: usize = 68; pub const MSGRCV: usize = 70; pub const MSGSND: usize = 69; pub const MSYNC: usize = 26; pub const MUNLOCK: usize = 150; pub const MUNLOCKALL: usize = 152; pub const MUNMAP: usize = 11; pub const NAME_TO_HANDLE_AT: usize = 303; pub const NANOSLEEP: usize = 35; pub const NEWFSTATAT: usize = 262; pub const NFSSERVCTL: usize = 180; pub const OPEN: usize = 2; pub const OPEN_BY_HANDLE_AT: usize = 304; pub const OPEN_TREE: usize = 428; pub const OPENAT: usize = 257; pub const OPENAT2: usize = 437; pub const PAUSE: usize = 34; pub const PERF_EVENT_OPEN: usize = 298; pub const PERSONALITY: usize = 135; pub const PIDFD_GETFD: usize = 438; pub const PIDFD_OPEN: usize = 434; pub const PIDFD_SEND_SIGNAL: usize = 424; pub const PIPE: usize = 22; pub const PIPE2: usize = 293; pub const PIVOT_ROOT: usize = 155; pub const PKEY_ALLOC: usize = 330; pub const PKEY_FREE: usize = 331; pub const PKEY_MPROTECT: usize = 329; pub const POLL: usize = 7; pub const PPOLL: usize = 271; pub const PRCTL: usize = 157; pub const PREAD64: usize = 17; pub const PREADV: usize = 295; pub const PREADV2: usize = 327; pub const PRLIMIT64: usize = 302; pub const PROCESS_MADVISE: usize = 440; pub const PROCESS_VM_READV: usize = 310; pub const PROCESS_VM_WRITEV: usize = 311; pub const PSELECT6: usize = 270; pub const PTRACE: usize = 101; pub const PUTPMSG: usize = 182; pub const PWRITE64: usize = 18; pub const PWRITEV: usize = 296; pub const PWRITEV2: usize = 328; pub const QUERY_MODULE: usize = 178; pub const QUOTACTL: usize = 179; pub const READ: usize = 0; pub const READAHEAD: usize = 187; pub const READLINK: usize = 89; pub const READLINKAT: usize = 267; pub const READV: usize = 19; pub const REBOOT: usize = 169; pub const RECVFROM: usize = 45; pub const RECVMMSG: usize = 299; pub const RECVMSG: usize = 47; pub const REMAP_FILE_PAGES: usize = 216; pub const REMOVEXATTR: usize = 197; pub const RENAME: usize = 82; pub const RENAMEAT: usize = 264; pub const RENAMEAT2: usize = 316; pub const REQUEST_KEY: usize = 249; pub const RESTART_SYSCALL: usize = 219; pub const RMDIR: usize = 84; pub const RSEQ: usize = 334; pub const RT_SIGACTION: usize = 13; pub const RT_SIGPENDING: usize = 127; pub const RT_SIGPROCMASK: usize = 14; pub const RT_SIGQUEUEINFO: usize = 129; pub const RT_SIGRETURN: usize = 15; pub const RT_SIGSUSPEND: usize = 130; pub const RT_SIGTIMEDWAIT: usize = 128; pub const RT_TGSIGQUEUEINFO: usize = 297; pub const SCHED_GET_PRIORITY_MAX: usize = 146; pub const SCHED_GET_PRIORITY_MIN: usize = 147; pub const SCHED_GETAFFINITY: usize = 204; pub const SCHED_GETATTR: usize = 315; pub const SCHED_GETPARAM: usize = 143; pub const SCHED_GETSCHEDULER: usize = 145; pub const SCHED_RR_GET_INTERVAL: usize = 148; pub const SCHED_SETAFFINITY: usize = 203; pub const SCHED_SETATTR: usize = 314; pub const SCHED_SETPARAM: usize = 142; pub const SCHED_SETSCHEDULER: usize = 144; pub const SCHED_YIELD: usize = 24; pub const SECCOMP: usize = 317; pub const SECURITY: usize = 185; pub const SELECT: usize = 23; pub const SEMCTL: usize = 66; pub const SEMGET: usize = 64; pub const SEMOP: usize = 65; pub const SEMTIMEDOP: usize = 220; pub const SENDFILE: usize = 40; pub const SENDMMSG: usize = 307; pub const SENDMSG: usize = 46; pub const SENDTO: usize = 44; pub const SET_MEMPOLICY: usize = 238; pub const SET_ROBUST_LIST: usize = 273; pub const SET_THREAD_AREA: usize = 205; pub const SET_TID_ADDRESS: usize = 218; pub const SETDOMAINNAME: usize = 171; pub const SETFSGID: usize = 123; pub const SETFSUID: usize = 122; pub const SETGID: usize = 106; pub const SETGROUPS: usize = 116; pub const SETHOSTNAME: usize = 170; pub const SETITIMER: usize = 38; pub const SETNS: usize = 308; pub const SETPGID: usize = 109; pub const SETPRIORITY: usize = 141; pub const SETREGID: usize = 114; pub const SETRESGID: usize = 119; pub const SETRESUID: usize = 117; pub const SETREUID: usize = 113; pub const SETRLIMIT: usize = 160; pub const SETSID: usize = 112; pub const SETSOCKOPT: usize = 54; pub const SETTIMEOFDAY: usize = 164; pub const SETUID: usize = 105; pub const SETXATTR: usize = 188; pub const SHMAT: usize = 30; pub const SHMCTL: usize = 31; pub const SHMDT: usize = 67; pub const SHMGET: usize = 29; pub const SHUTDOWN: usize = 48; pub const SIGALTSTACK: usize = 131; pub const SIGNALFD: usize = 282; pub const SIGNALFD4: usize = 289; pub const SOCKET: usize = 41; pub const SOCKETPAIR: usize = 53; pub const SPLICE: usize = 275; pub const STAT: usize = 4; pub const STATFS: usize = 137; pub const STATX: usize = 332; pub const SWAPOFF: usize = 168; pub const SWAPON: usize = 167; pub const SYMLINK: usize = 88; pub const SYMLINKAT: usize = 266; pub const SYNC: usize = 162; pub const SYNC_FILE_RANGE: usize = 277; pub const SYNCFS: usize = 306; pub const SYSFS: usize = 139; pub const SYSINFO: usize = 99; pub const SYSLOG: usize = 103; pub const TEE: usize = 276; pub const TGKILL: usize = 234; pub const TIME: usize = 201; pub const TIMER_CREATE: usize = 222; pub const TIMER_DELETE: usize = 226; pub const TIMER_GETOVERRUN: usize = 225; pub const TIMER_GETTIME: usize = 224; pub const TIMER_SETTIME: usize = 223; pub const TIMERFD_CREATE: usize = 283; pub const TIMERFD_GETTIME: usize = 287; pub const TIMERFD_SETTIME: usize = 286; pub const TIMES: usize = 100; pub const TKILL: usize = 200; pub const TRUNCATE: usize = 76; pub const TUXCALL: usize = 184; pub const UMASK: usize = 95; pub const UMOUNT2: usize = 166; pub const UNAME: usize = 63; pub const UNLINK: usize = 87; pub const UNLINKAT: usize = 263; pub const UNSHARE: usize = 272; pub const USELIB: usize = 134; pub const USERFAULTFD: usize = 323; pub const USTAT: usize = 136; pub const UTIME: usize = 132; pub const UTIMENSAT: usize = 280; pub const UTIMES: usize = 235; pub const VFORK: usize = 58; pub const VHANGUP: usize = 153; pub const VMSPLICE: usize = 278; pub const VSERVER: usize = 236; pub const WAIT4: usize = 61; pub const WAITID: usize = 247; pub const WRITE: usize = 1; pub const WRITEV: usize = 20; sc-0.2.7/src/platform/macos-aarch64/mod.rs000064400000000000000000000055240072674642500163650ustar 00000000000000// Copyright 2014 The syscall.rs Project Developers. See the // COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. //! This library was built for aarch64 MacOS. use core::arch::asm; pub mod nr; #[inline(always)] pub unsafe fn syscall0(n: usize) -> usize { let ret: usize; asm!( "svc 0", in("x16") n, out("x0") ret, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall1(n: usize, a1: usize) -> usize { let ret: usize; asm!( "svc 0", in("x16") n, inout("x0") a1 => ret, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall2(n: usize, a1: usize, a2: usize) -> usize { let ret: usize; asm!( "svc 0", in("x16") n, inout("x0") a1 => ret, in("x1") a2, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall3(n: usize, a1: usize, a2: usize, a3: usize) -> usize { let ret: usize; asm!( "svc 0", in("x16") n, inout("x0") a1 => ret, in("x1") a2, in("x2") a3, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall4(n: usize, a1: usize, a2: usize, a3: usize, a4: usize) -> usize { let ret: usize; asm!( "svc 0", in("x16") n, inout("x0") a1 => ret, in("x1") a2, in("x2") a3, in("x3") a4, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall5(n: usize, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize) -> usize { let ret: usize; asm!( "svc 0", in("x16") n, inout("x0") a1 => ret, in("x1") a2, in("x2") a3, in("x3") a4, in("x4") a5, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall6(n: usize, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize, a6: usize) -> usize { let ret: usize; asm!( "svc 0", in("x16") n, inout("x0") a1 => ret, in("x1") a2, in("x2") a3, in("x3") a4, in("x4") a5, in("x5") a6, options(nostack), ); ret } sc-0.2.7/src/platform/macos-aarch64/nr.rs000064400000000000000000000306760072674642500162330ustar 00000000000000// Copyright 2015 The syscall.rs Project Developers. See the // COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. //! System call numbers for aarch64 MacOS. pub const SYSCALL: usize = 0; pub const EXIT: usize = 1; pub const FORK: usize = 2; pub const READ: usize = 3; pub const WRITE: usize = 4; pub const OPEN: usize = 5; pub const CLOSE: usize = 6; pub const WAIT4: usize = 7; pub const LINK: usize = 9; pub const UNLINK: usize = 10; pub const CHDIR: usize = 12; pub const FCHDIR: usize = 13; pub const MKNOD: usize = 14; pub const CHMOD: usize = 15; pub const CHOWN: usize = 16; pub const GETFSSTAT: usize = 18; pub const GETPID: usize = 20; pub const SETUID: usize = 23; pub const GETUID: usize = 24; pub const GETEUID: usize = 25; pub const PTRACE: usize = 26; pub const RECVMSG: usize = 27; pub const SENDMSG: usize = 28; pub const RECVFROM: usize = 29; pub const ACCEPT: usize = 30; pub const GETPEERNAME: usize = 31; pub const GETSOCKNAME: usize = 32; pub const ACCESS: usize = 33; pub const CHFLAGS: usize = 34; pub const FCHFLAGS: usize = 35; pub const SYNC: usize = 36; pub const KILL: usize = 37; pub const GETPPID: usize = 39; pub const DUP: usize = 41; pub const PIPE: usize = 42; pub const GETEGID: usize = 43; pub const PROFIL: usize = 44; pub const SIGACTION: usize = 46; pub const GETGID: usize = 47; pub const SIGPROCMASK: usize = 48; pub const GETLOGIN: usize = 49; pub const SETLOGIN: usize = 50; pub const ACCT: usize = 51; pub const SIGPENDING: usize = 52; pub const SIGALTSTACK: usize = 53; pub const IOCTL: usize = 54; pub const REBOOT: usize = 55; pub const REVOKE: usize = 56; pub const SYMLINK: usize = 57; pub const READLINK: usize = 58; pub const EXECVE: usize = 59; pub const UMASK: usize = 60; pub const CHROOT: usize = 61; pub const MSYNC: usize = 65; pub const VFORK: usize = 66; pub const MUNMAP: usize = 73; pub const MPROTECT: usize = 74; pub const MADVISE: usize = 75; pub const MINCORE: usize = 78; pub const GETGROUPS: usize = 79; pub const SETGROUPS: usize = 80; pub const GETPGRP: usize = 81; pub const SETPGID: usize = 82; pub const SETITIMER: usize = 83; pub const SWAPON: usize = 85; pub const GETITIMER: usize = 86; pub const GETDTABLESIZE: usize = 89; pub const DUP2: usize = 90; pub const FCNTL: usize = 92; pub const SELECT: usize = 93; pub const FSYNC: usize = 95; pub const SETPRIORITY: usize = 96; pub const SOCKET: usize = 97; pub const CONNECT: usize = 98; pub const GETPRIORITY: usize = 100; pub const BIND: usize = 104; pub const SETSOCKOPT: usize = 105; pub const LISTEN: usize = 106; pub const SIGSUSPEND: usize = 111; pub const GETTIMEOFDAY: usize = 116; pub const GETRUSAGE: usize = 117; pub const GETSOCKOPT: usize = 118; pub const READV: usize = 120; pub const WRITEV: usize = 121; pub const SETTIMEOFDAY: usize = 122; pub const FCHOWN: usize = 123; pub const FCHMOD: usize = 124; pub const SETREUID: usize = 126; pub const SETREGID: usize = 127; pub const RENAME: usize = 128; pub const FLOCK: usize = 131; pub const MKFIFO: usize = 132; pub const SENDTO: usize = 133; pub const SHUTDOWN: usize = 134; pub const SOCKETPAIR: usize = 135; pub const MKDIR: usize = 136; pub const RMDIR: usize = 137; pub const UTIMES: usize = 138; pub const FUTIMES: usize = 139; pub const ADJTIME: usize = 140; pub const GETHOSTUUID: usize = 142; pub const SETSID: usize = 147; pub const GETPGID: usize = 151; pub const SETPRIVEXEC: usize = 152; pub const PREAD: usize = 153; pub const PWRITE: usize = 154; pub const NFSSVC: usize = 155; pub const STATFS: usize = 157; pub const FSTATFS: usize = 158; pub const UNMOUNT: usize = 159; pub const GETFH: usize = 161; pub const QUOTACTL: usize = 165; pub const MOUNT: usize = 167; pub const CSOPS: usize = 169; pub const WAITID: usize = 173; pub const ADD_PROFIL: usize = 176; pub const KDEBUG_TRACE: usize = 180; pub const SETGID: usize = 181; pub const SETEGID: usize = 182; pub const SETEUID: usize = 183; pub const SIGRETURN: usize = 184; pub const CHUD: usize = 185; pub const FDATASYNC: usize = 187; pub const STAT: usize = 188; pub const FSTAT: usize = 189; pub const LSTAT: usize = 190; pub const PATHCONF: usize = 191; pub const FPATHCONF: usize = 192; pub const GETRLIMIT: usize = 194; pub const SETRLIMIT: usize = 195; pub const GETDIRENTRIES: usize = 196; pub const MMAP: usize = 197; pub const LSEEK: usize = 199; pub const TRUNCATE: usize = 200; pub const FTRUNCATE: usize = 201; pub const __SYSCTL: usize = 202; pub const MLOCK: usize = 203; pub const MUNLOCK: usize = 204; pub const UNDELETE: usize = 205; pub const ATSOCKET: usize = 206; pub const ATGETMSG: usize = 207; pub const ATPUTMSG: usize = 208; pub const ATPSNDREQ: usize = 209; pub const ATPSNDRSP: usize = 210; pub const ATPGETREQ: usize = 211; pub const ATPGETRSP: usize = 212; pub const MKCOMPLEX: usize = 216; pub const STATV: usize = 217; pub const LSTATV: usize = 218; pub const FSTATV: usize = 219; pub const GETATTRLIST: usize = 220; pub const SETATTRLIST: usize = 221; pub const GETDIRENTRIESATTR: usize = 222; pub const EXCHANGEDATA: usize = 223; pub const SEARCHFS: usize = 225; pub const DELETE: usize = 226; pub const COPYFILE: usize = 227; pub const FGETATTRLIST: usize = 228; pub const FSETATTRLIST: usize = 229; pub const POLL: usize = 230; pub const WATCHEVENT: usize = 231; pub const WAITEVENT: usize = 232; pub const MODWATCH: usize = 233; pub const GETXATTR: usize = 234; pub const FGETXATTR: usize = 235; pub const SETXATTR: usize = 236; pub const FSETXATTR: usize = 237; pub const REMOVEXATTR: usize = 238; pub const FREMOVEXATTR: usize = 239; pub const LISTXATTR: usize = 240; pub const FLISTXATTR: usize = 241; pub const FSCTL: usize = 242; pub const INITGROUPS: usize = 243; pub const POSIX_SPAWN: usize = 244; pub const FFSCTL: usize = 245; pub const NFSCLNT: usize = 247; pub const FHOPEN: usize = 248; pub const MINHERIT: usize = 250; pub const SEMSYS: usize = 251; pub const MSGSYS: usize = 252; pub const SHMSYS: usize = 253; pub const SEMCTL: usize = 254; pub const SEMGET: usize = 255; pub const SEMOP: usize = 256; pub const MSGCTL: usize = 258; pub const MSGGET: usize = 259; pub const MSGSND: usize = 260; pub const MSGRCV: usize = 261; pub const SHMAT: usize = 262; pub const SHMCTL: usize = 263; pub const SHMDT: usize = 264; pub const SHMGET: usize = 265; pub const SHM_OPEN: usize = 266; pub const SHM_UNLINK: usize = 267; pub const SEM_OPEN: usize = 268; pub const SEM_CLOSE: usize = 269; pub const SEM_UNLINK: usize = 270; pub const SEM_WAIT: usize = 271; pub const SEM_TRYWAIT: usize = 272; pub const SEM_POST: usize = 273; pub const SEM_GETVALUE: usize = 274; pub const SEM_INIT: usize = 275; pub const SEM_DESTROY: usize = 276; pub const OPEN_EXTENDED: usize = 277; pub const UMASK_EXTENDED: usize = 278; pub const STAT_EXTENDED: usize = 279; pub const LSTAT_EXTENDED: usize = 280; pub const FSTAT_EXTENDED: usize = 281; pub const CHMOD_EXTENDED: usize = 282; pub const FCHMOD_EXTENDED: usize = 283; pub const ACCESS_EXTENDED: usize = 284; pub const SETTID: usize = 285; pub const GETTID: usize = 286; pub const SETSGROUPS: usize = 287; pub const GETSGROUPS: usize = 288; pub const SETWGROUPS: usize = 289; pub const GETWGROUPS: usize = 290; pub const MKFIFO_EXTENDED: usize = 291; pub const MKDIR_EXTENDED: usize = 292; pub const IDENTITYSVC: usize = 293; pub const SHARED_REGION_CHECK_NP: usize = 294; pub const VM_PRESSURE_MONITOR: usize = 296; pub const PSYNCH_RW_LONGRDLOCK: usize = 297; pub const PSYNCH_RW_YIELDWRLOCK: usize = 298; pub const PSYNCH_RW_DOWNGRADE: usize = 299; pub const PSYNCH_RW_UPGRADE: usize = 300; pub const PSYNCH_MUTEXWAIT: usize = 301; pub const PSYNCH_MUTEXDROP: usize = 302; pub const PSYNCH_CVBROAD: usize = 303; pub const PSYNCH_CVSIGNAL: usize = 304; pub const PSYNCH_CVWAIT: usize = 305; pub const PSYNCH_RW_RDLOCK: usize = 306; pub const PSYNCH_RW_WRLOCK: usize = 307; pub const PSYNCH_RW_UNLOCK: usize = 308; pub const PSYNCH_RW_UNLOCK2: usize = 309; pub const GETSID: usize = 310; pub const SETTID_WITH_PID: usize = 311; pub const PSYNCH_CVCLRPREPOST: usize = 312; pub const AIO_FSYNC: usize = 313; pub const AIO_RETURN: usize = 314; pub const AIO_SUSPEND: usize = 315; pub const AIO_CANCEL: usize = 316; pub const AIO_ERROR: usize = 317; pub const AIO_READ: usize = 318; pub const AIO_WRITE: usize = 319; pub const LIO_LISTIO: usize = 320; pub const IOPOLICYSYS: usize = 322; pub const PROCESS_POLICY: usize = 323; pub const MLOCKALL: usize = 324; pub const MUNLOCKALL: usize = 325; pub const ISSETUGID: usize = 327; pub const __PTHREAD_KILL: usize = 328; pub const __PTHREAD_SIGMASK: usize = 329; pub const __SIGWAIT: usize = 330; pub const __DISABLE_THREADSIGNAL: usize = 331; pub const __PTHREAD_MARKCANCEL: usize = 332; pub const __PTHREAD_CANCELED: usize = 333; pub const __SEMWAIT_SIGNAL: usize = 334; pub const PROC_INFO: usize = 336; pub const SENDFILE: usize = 337; pub const STAT64: usize = 338; pub const FSTAT64: usize = 339; pub const LSTAT64: usize = 340; pub const STAT64_EXTENDED: usize = 341; pub const LSTAT64_EXTENDED: usize = 342; pub const FSTAT64_EXTENDED: usize = 343; pub const GETDIRENTRIES64: usize = 344; pub const STATFS64: usize = 345; pub const FSTATFS64: usize = 346; pub const GETFSSTAT64: usize = 347; pub const __PTHREAD_CHDIR: usize = 348; pub const __PTHREAD_FCHDIR: usize = 349; pub const AUDIT: usize = 350; pub const AUDITON: usize = 351; pub const GETAUID: usize = 353; pub const SETAUID: usize = 354; pub const GETAUDIT: usize = 355; pub const SETAUDIT: usize = 356; pub const GETAUDIT_ADDR: usize = 357; pub const SETAUDIT_ADDR: usize = 358; pub const AUDITCTL: usize = 359; pub const BSDTHREAD_CREATE: usize = 360; pub const BSDTHREAD_TERMINATE: usize = 361; pub const KQUEUE: usize = 362; pub const KEVENT: usize = 363; pub const LCHOWN: usize = 364; pub const STACK_SNAPSHOT: usize = 365; pub const BSDTHREAD_REGISTER: usize = 366; pub const WORKQ_OPEN: usize = 367; pub const WORKQ_KERNRETURN: usize = 368; pub const KEVENT64: usize = 369; pub const __OLD_SEMWAIT_SIGNAL: usize = 370; pub const __OLD_SEMWAIT_SIGNAL_NOCANCEL: usize = 371; pub const THREAD_SELFID: usize = 372; pub const __MAC_EXECVE: usize = 380; pub const __MAC_SYSCALL: usize = 381; pub const __MAC_GET_FILE: usize = 382; pub const __MAC_SET_FILE: usize = 383; pub const __MAC_GET_LINK: usize = 384; pub const __MAC_SET_LINK: usize = 385; pub const __MAC_GET_PROC: usize = 386; pub const __MAC_SET_PROC: usize = 387; pub const __MAC_GET_FD: usize = 388; pub const __MAC_SET_FD: usize = 389; pub const __MAC_GET_PID: usize = 390; pub const __MAC_GET_LCID: usize = 391; pub const __MAC_GET_LCTX: usize = 392; pub const __MAC_SET_LCTX: usize = 393; pub const SETLCID: usize = 394; pub const GETLCID: usize = 395; pub const READ_NOCANCEL: usize = 396; pub const WRITE_NOCANCEL: usize = 397; pub const OPEN_NOCANCEL: usize = 398; pub const CLOSE_NOCANCEL: usize = 399; pub const WAIT4_NOCANCEL: usize = 400; pub const RECVMSG_NOCANCEL: usize = 401; pub const SENDMSG_NOCANCEL: usize = 402; pub const RECVFROM_NOCANCEL: usize = 403; pub const ACCEPT_NOCANCEL: usize = 404; pub const MSYNC_NOCANCEL: usize = 405; pub const FCNTL_NOCANCEL: usize = 406; pub const SELECT_NOCANCEL: usize = 407; pub const FSYNC_NOCANCEL: usize = 408; pub const CONNECT_NOCANCEL: usize = 409; pub const SIGSUSPEND_NOCANCEL: usize = 410; pub const READV_NOCANCEL: usize = 411; pub const WRITEV_NOCANCEL: usize = 412; pub const SENDTO_NOCANCEL: usize = 413; pub const PREAD_NOCANCEL: usize = 414; pub const PWRITE_NOCANCEL: usize = 415; pub const WAITID_NOCANCEL: usize = 416; pub const POLL_NOCANCEL: usize = 417; pub const MSGSND_NOCANCEL: usize = 418; pub const MSGRCV_NOCANCEL: usize = 419; pub const SEM_WAIT_NOCANCEL: usize = 420; pub const AIO_SUSPEND_NOCANCEL: usize = 421; pub const __SIGWAIT_NOCANCEL: usize = 422; pub const __SEMWAIT_SIGNAL_NOCANCEL: usize = 423; pub const __MAC_MOUNT: usize = 424; pub const __MAC_GET_MOUNT: usize = 425; pub const __MAC_GETFSSTAT: usize = 426; pub const FSGETPATH: usize = 427; pub const AUDIT_SESSION_SELF: usize = 428; pub const AUDIT_SESSION_JOIN: usize = 429; pub const FILEPORT_MAKEPORT: usize = 430; pub const FILEPORT_MAKEFD: usize = 431; pub const AUDIT_SESSION_PORT: usize = 432; pub const PID_SUSPEND: usize = 433; pub const PID_RESUME: usize = 434; pub const PID_HIBERNATE: usize = 435; pub const PID_SHUTDOWN_SOCKETS: usize = 436; pub const SHARED_REGION_MAP_AND_SLIDE_NP: usize = 438; pub const MAXSYSCALL: usize = 439; sc-0.2.7/src/platform/macos-x86_64/mod.rs000064400000000000000000000065700072674642500160750ustar 00000000000000// Copyright 2014 The syscall.rs Project Developers. See the // COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. //! This library was built for x86-64 MacOS. use core::arch::asm; pub mod nr; const MACOS_SYSCALL_PREFIX: usize = 33554432; #[inline(always)] pub unsafe fn syscall0(n: usize) -> usize { let ret: usize; asm!( "syscall", inout("rax") (n + MACOS_SYSCALL_PREFIX) => ret, out("rcx") _, out("r11") _, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall1(n: usize, a1: usize) -> usize { let ret: usize; asm!( "syscall", inout("rax") (n + MACOS_SYSCALL_PREFIX) => ret, in("rdi") a1, out("rcx") _, out("r11") _, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall2(n: usize, a1: usize, a2: usize) -> usize { let ret: usize; asm!( "syscall", inout("rax") (n + MACOS_SYSCALL_PREFIX) => ret, in("rdi") a1, in("rsi") a2, out("rcx") _, out("r11") _, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall3(n: usize, a1: usize, a2: usize, a3: usize) -> usize { let ret: usize; asm!( "syscall", inout("rax") (n + MACOS_SYSCALL_PREFIX) => ret, in("rdi") a1, in("rsi") a2, in("rdx") a3, out("rcx") _, out("r11") _, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall4(n: usize, a1: usize, a2: usize, a3: usize, a4: usize) -> usize { let ret: usize; asm!( "syscall", inout("rax") (n + MACOS_SYSCALL_PREFIX) => ret, in("rdi") a1, in("rsi") a2, in("rdx") a3, in("r10") a4, out("rcx") _, out("r11") _, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall5(n: usize, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize) -> usize { let ret: usize; asm!( "syscall", inout("rax") (n + MACOS_SYSCALL_PREFIX) => ret, in("rdi") a1, in("rsi") a2, in("rdx") a3, in("r10") a4, in("r8") a5, out("rcx") _, out("r11") _, options(nostack), ); ret } #[inline(always)] pub unsafe fn syscall6(n: usize, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize, a6: usize) -> usize { let ret: usize; asm!( "syscall", inout("rax") (n + MACOS_SYSCALL_PREFIX) => ret, in("rdi") a1, in("rsi") a2, in("rdx") a3, in("r10") a4, in("r8") a5, in("r9") a6, out("rcx") _, out("r11") _, options(nostack), ); ret } sc-0.2.7/src/platform/macos-x86_64/nr.rs000064400000000000000000000306750072674642500157400ustar 00000000000000// Copyright 2015 The syscall.rs Project Developers. See the // COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. //! System call numbers for x86-64 MacOS. pub const SYSCALL: usize = 0; pub const EXIT: usize = 1; pub const FORK: usize = 2; pub const READ: usize = 3; pub const WRITE: usize = 4; pub const OPEN: usize = 5; pub const CLOSE: usize = 6; pub const WAIT4: usize = 7; pub const LINK: usize = 9; pub const UNLINK: usize = 10; pub const CHDIR: usize = 12; pub const FCHDIR: usize = 13; pub const MKNOD: usize = 14; pub const CHMOD: usize = 15; pub const CHOWN: usize = 16; pub const GETFSSTAT: usize = 18; pub const GETPID: usize = 20; pub const SETUID: usize = 23; pub const GETUID: usize = 24; pub const GETEUID: usize = 25; pub const PTRACE: usize = 26; pub const RECVMSG: usize = 27; pub const SENDMSG: usize = 28; pub const RECVFROM: usize = 29; pub const ACCEPT: usize = 30; pub const GETPEERNAME: usize = 31; pub const GETSOCKNAME: usize = 32; pub const ACCESS: usize = 33; pub const CHFLAGS: usize = 34; pub const FCHFLAGS: usize = 35; pub const SYNC: usize = 36; pub const KILL: usize = 37; pub const GETPPID: usize = 39; pub const DUP: usize = 41; pub const PIPE: usize = 42; pub const GETEGID: usize = 43; pub const PROFIL: usize = 44; pub const SIGACTION: usize = 46; pub const GETGID: usize = 47; pub const SIGPROCMASK: usize = 48; pub const GETLOGIN: usize = 49; pub const SETLOGIN: usize = 50; pub const ACCT: usize = 51; pub const SIGPENDING: usize = 52; pub const SIGALTSTACK: usize = 53; pub const IOCTL: usize = 54; pub const REBOOT: usize = 55; pub const REVOKE: usize = 56; pub const SYMLINK: usize = 57; pub const READLINK: usize = 58; pub const EXECVE: usize = 59; pub const UMASK: usize = 60; pub const CHROOT: usize = 61; pub const MSYNC: usize = 65; pub const VFORK: usize = 66; pub const MUNMAP: usize = 73; pub const MPROTECT: usize = 74; pub const MADVISE: usize = 75; pub const MINCORE: usize = 78; pub const GETGROUPS: usize = 79; pub const SETGROUPS: usize = 80; pub const GETPGRP: usize = 81; pub const SETPGID: usize = 82; pub const SETITIMER: usize = 83; pub const SWAPON: usize = 85; pub const GETITIMER: usize = 86; pub const GETDTABLESIZE: usize = 89; pub const DUP2: usize = 90; pub const FCNTL: usize = 92; pub const SELECT: usize = 93; pub const FSYNC: usize = 95; pub const SETPRIORITY: usize = 96; pub const SOCKET: usize = 97; pub const CONNECT: usize = 98; pub const GETPRIORITY: usize = 100; pub const BIND: usize = 104; pub const SETSOCKOPT: usize = 105; pub const LISTEN: usize = 106; pub const SIGSUSPEND: usize = 111; pub const GETTIMEOFDAY: usize = 116; pub const GETRUSAGE: usize = 117; pub const GETSOCKOPT: usize = 118; pub const READV: usize = 120; pub const WRITEV: usize = 121; pub const SETTIMEOFDAY: usize = 122; pub const FCHOWN: usize = 123; pub const FCHMOD: usize = 124; pub const SETREUID: usize = 126; pub const SETREGID: usize = 127; pub const RENAME: usize = 128; pub const FLOCK: usize = 131; pub const MKFIFO: usize = 132; pub const SENDTO: usize = 133; pub const SHUTDOWN: usize = 134; pub const SOCKETPAIR: usize = 135; pub const MKDIR: usize = 136; pub const RMDIR: usize = 137; pub const UTIMES: usize = 138; pub const FUTIMES: usize = 139; pub const ADJTIME: usize = 140; pub const GETHOSTUUID: usize = 142; pub const SETSID: usize = 147; pub const GETPGID: usize = 151; pub const SETPRIVEXEC: usize = 152; pub const PREAD: usize = 153; pub const PWRITE: usize = 154; pub const NFSSVC: usize = 155; pub const STATFS: usize = 157; pub const FSTATFS: usize = 158; pub const UNMOUNT: usize = 159; pub const GETFH: usize = 161; pub const QUOTACTL: usize = 165; pub const MOUNT: usize = 167; pub const CSOPS: usize = 169; pub const WAITID: usize = 173; pub const ADD_PROFIL: usize = 176; pub const KDEBUG_TRACE: usize = 180; pub const SETGID: usize = 181; pub const SETEGID: usize = 182; pub const SETEUID: usize = 183; pub const SIGRETURN: usize = 184; pub const CHUD: usize = 185; pub const FDATASYNC: usize = 187; pub const STAT: usize = 188; pub const FSTAT: usize = 189; pub const LSTAT: usize = 190; pub const PATHCONF: usize = 191; pub const FPATHCONF: usize = 192; pub const GETRLIMIT: usize = 194; pub const SETRLIMIT: usize = 195; pub const GETDIRENTRIES: usize = 196; pub const MMAP: usize = 197; pub const LSEEK: usize = 199; pub const TRUNCATE: usize = 200; pub const FTRUNCATE: usize = 201; pub const __SYSCTL: usize = 202; pub const MLOCK: usize = 203; pub const MUNLOCK: usize = 204; pub const UNDELETE: usize = 205; pub const ATSOCKET: usize = 206; pub const ATGETMSG: usize = 207; pub const ATPUTMSG: usize = 208; pub const ATPSNDREQ: usize = 209; pub const ATPSNDRSP: usize = 210; pub const ATPGETREQ: usize = 211; pub const ATPGETRSP: usize = 212; pub const MKCOMPLEX: usize = 216; pub const STATV: usize = 217; pub const LSTATV: usize = 218; pub const FSTATV: usize = 219; pub const GETATTRLIST: usize = 220; pub const SETATTRLIST: usize = 221; pub const GETDIRENTRIESATTR: usize = 222; pub const EXCHANGEDATA: usize = 223; pub const SEARCHFS: usize = 225; pub const DELETE: usize = 226; pub const COPYFILE: usize = 227; pub const FGETATTRLIST: usize = 228; pub const FSETATTRLIST: usize = 229; pub const POLL: usize = 230; pub const WATCHEVENT: usize = 231; pub const WAITEVENT: usize = 232; pub const MODWATCH: usize = 233; pub const GETXATTR: usize = 234; pub const FGETXATTR: usize = 235; pub const SETXATTR: usize = 236; pub const FSETXATTR: usize = 237; pub const REMOVEXATTR: usize = 238; pub const FREMOVEXATTR: usize = 239; pub const LISTXATTR: usize = 240; pub const FLISTXATTR: usize = 241; pub const FSCTL: usize = 242; pub const INITGROUPS: usize = 243; pub const POSIX_SPAWN: usize = 244; pub const FFSCTL: usize = 245; pub const NFSCLNT: usize = 247; pub const FHOPEN: usize = 248; pub const MINHERIT: usize = 250; pub const SEMSYS: usize = 251; pub const MSGSYS: usize = 252; pub const SHMSYS: usize = 253; pub const SEMCTL: usize = 254; pub const SEMGET: usize = 255; pub const SEMOP: usize = 256; pub const MSGCTL: usize = 258; pub const MSGGET: usize = 259; pub const MSGSND: usize = 260; pub const MSGRCV: usize = 261; pub const SHMAT: usize = 262; pub const SHMCTL: usize = 263; pub const SHMDT: usize = 264; pub const SHMGET: usize = 265; pub const SHM_OPEN: usize = 266; pub const SHM_UNLINK: usize = 267; pub const SEM_OPEN: usize = 268; pub const SEM_CLOSE: usize = 269; pub const SEM_UNLINK: usize = 270; pub const SEM_WAIT: usize = 271; pub const SEM_TRYWAIT: usize = 272; pub const SEM_POST: usize = 273; pub const SEM_GETVALUE: usize = 274; pub const SEM_INIT: usize = 275; pub const SEM_DESTROY: usize = 276; pub const OPEN_EXTENDED: usize = 277; pub const UMASK_EXTENDED: usize = 278; pub const STAT_EXTENDED: usize = 279; pub const LSTAT_EXTENDED: usize = 280; pub const FSTAT_EXTENDED: usize = 281; pub const CHMOD_EXTENDED: usize = 282; pub const FCHMOD_EXTENDED: usize = 283; pub const ACCESS_EXTENDED: usize = 284; pub const SETTID: usize = 285; pub const GETTID: usize = 286; pub const SETSGROUPS: usize = 287; pub const GETSGROUPS: usize = 288; pub const SETWGROUPS: usize = 289; pub const GETWGROUPS: usize = 290; pub const MKFIFO_EXTENDED: usize = 291; pub const MKDIR_EXTENDED: usize = 292; pub const IDENTITYSVC: usize = 293; pub const SHARED_REGION_CHECK_NP: usize = 294; pub const VM_PRESSURE_MONITOR: usize = 296; pub const PSYNCH_RW_LONGRDLOCK: usize = 297; pub const PSYNCH_RW_YIELDWRLOCK: usize = 298; pub const PSYNCH_RW_DOWNGRADE: usize = 299; pub const PSYNCH_RW_UPGRADE: usize = 300; pub const PSYNCH_MUTEXWAIT: usize = 301; pub const PSYNCH_MUTEXDROP: usize = 302; pub const PSYNCH_CVBROAD: usize = 303; pub const PSYNCH_CVSIGNAL: usize = 304; pub const PSYNCH_CVWAIT: usize = 305; pub const PSYNCH_RW_RDLOCK: usize = 306; pub const PSYNCH_RW_WRLOCK: usize = 307; pub const PSYNCH_RW_UNLOCK: usize = 308; pub const PSYNCH_RW_UNLOCK2: usize = 309; pub const GETSID: usize = 310; pub const SETTID_WITH_PID: usize = 311; pub const PSYNCH_CVCLRPREPOST: usize = 312; pub const AIO_FSYNC: usize = 313; pub const AIO_RETURN: usize = 314; pub const AIO_SUSPEND: usize = 315; pub const AIO_CANCEL: usize = 316; pub const AIO_ERROR: usize = 317; pub const AIO_READ: usize = 318; pub const AIO_WRITE: usize = 319; pub const LIO_LISTIO: usize = 320; pub const IOPOLICYSYS: usize = 322; pub const PROCESS_POLICY: usize = 323; pub const MLOCKALL: usize = 324; pub const MUNLOCKALL: usize = 325; pub const ISSETUGID: usize = 327; pub const __PTHREAD_KILL: usize = 328; pub const __PTHREAD_SIGMASK: usize = 329; pub const __SIGWAIT: usize = 330; pub const __DISABLE_THREADSIGNAL: usize = 331; pub const __PTHREAD_MARKCANCEL: usize = 332; pub const __PTHREAD_CANCELED: usize = 333; pub const __SEMWAIT_SIGNAL: usize = 334; pub const PROC_INFO: usize = 336; pub const SENDFILE: usize = 337; pub const STAT64: usize = 338; pub const FSTAT64: usize = 339; pub const LSTAT64: usize = 340; pub const STAT64_EXTENDED: usize = 341; pub const LSTAT64_EXTENDED: usize = 342; pub const FSTAT64_EXTENDED: usize = 343; pub const GETDIRENTRIES64: usize = 344; pub const STATFS64: usize = 345; pub const FSTATFS64: usize = 346; pub const GETFSSTAT64: usize = 347; pub const __PTHREAD_CHDIR: usize = 348; pub const __PTHREAD_FCHDIR: usize = 349; pub const AUDIT: usize = 350; pub const AUDITON: usize = 351; pub const GETAUID: usize = 353; pub const SETAUID: usize = 354; pub const GETAUDIT: usize = 355; pub const SETAUDIT: usize = 356; pub const GETAUDIT_ADDR: usize = 357; pub const SETAUDIT_ADDR: usize = 358; pub const AUDITCTL: usize = 359; pub const BSDTHREAD_CREATE: usize = 360; pub const BSDTHREAD_TERMINATE: usize = 361; pub const KQUEUE: usize = 362; pub const KEVENT: usize = 363; pub const LCHOWN: usize = 364; pub const STACK_SNAPSHOT: usize = 365; pub const BSDTHREAD_REGISTER: usize = 366; pub const WORKQ_OPEN: usize = 367; pub const WORKQ_KERNRETURN: usize = 368; pub const KEVENT64: usize = 369; pub const __OLD_SEMWAIT_SIGNAL: usize = 370; pub const __OLD_SEMWAIT_SIGNAL_NOCANCEL: usize = 371; pub const THREAD_SELFID: usize = 372; pub const __MAC_EXECVE: usize = 380; pub const __MAC_SYSCALL: usize = 381; pub const __MAC_GET_FILE: usize = 382; pub const __MAC_SET_FILE: usize = 383; pub const __MAC_GET_LINK: usize = 384; pub const __MAC_SET_LINK: usize = 385; pub const __MAC_GET_PROC: usize = 386; pub const __MAC_SET_PROC: usize = 387; pub const __MAC_GET_FD: usize = 388; pub const __MAC_SET_FD: usize = 389; pub const __MAC_GET_PID: usize = 390; pub const __MAC_GET_LCID: usize = 391; pub const __MAC_GET_LCTX: usize = 392; pub const __MAC_SET_LCTX: usize = 393; pub const SETLCID: usize = 394; pub const GETLCID: usize = 395; pub const READ_NOCANCEL: usize = 396; pub const WRITE_NOCANCEL: usize = 397; pub const OPEN_NOCANCEL: usize = 398; pub const CLOSE_NOCANCEL: usize = 399; pub const WAIT4_NOCANCEL: usize = 400; pub const RECVMSG_NOCANCEL: usize = 401; pub const SENDMSG_NOCANCEL: usize = 402; pub const RECVFROM_NOCANCEL: usize = 403; pub const ACCEPT_NOCANCEL: usize = 404; pub const MSYNC_NOCANCEL: usize = 405; pub const FCNTL_NOCANCEL: usize = 406; pub const SELECT_NOCANCEL: usize = 407; pub const FSYNC_NOCANCEL: usize = 408; pub const CONNECT_NOCANCEL: usize = 409; pub const SIGSUSPEND_NOCANCEL: usize = 410; pub const READV_NOCANCEL: usize = 411; pub const WRITEV_NOCANCEL: usize = 412; pub const SENDTO_NOCANCEL: usize = 413; pub const PREAD_NOCANCEL: usize = 414; pub const PWRITE_NOCANCEL: usize = 415; pub const WAITID_NOCANCEL: usize = 416; pub const POLL_NOCANCEL: usize = 417; pub const MSGSND_NOCANCEL: usize = 418; pub const MSGRCV_NOCANCEL: usize = 419; pub const SEM_WAIT_NOCANCEL: usize = 420; pub const AIO_SUSPEND_NOCANCEL: usize = 421; pub const __SIGWAIT_NOCANCEL: usize = 422; pub const __SEMWAIT_SIGNAL_NOCANCEL: usize = 423; pub const __MAC_MOUNT: usize = 424; pub const __MAC_GET_MOUNT: usize = 425; pub const __MAC_GETFSSTAT: usize = 426; pub const FSGETPATH: usize = 427; pub const AUDIT_SESSION_SELF: usize = 428; pub const AUDIT_SESSION_JOIN: usize = 429; pub const FILEPORT_MAKEPORT: usize = 430; pub const FILEPORT_MAKEFD: usize = 431; pub const AUDIT_SESSION_PORT: usize = 432; pub const PID_SUSPEND: usize = 433; pub const PID_RESUME: usize = 434; pub const PID_HIBERNATE: usize = 435; pub const PID_SHUTDOWN_SOCKETS: usize = 436; pub const SHARED_REGION_MAP_AND_SLIDE_NP: usize = 438; pub const MAXSYSCALL: usize = 439; sc-0.2.7/tests/test.rs000064400000000000000000000020360072674642500127570ustar 00000000000000// Copyright 2014 The syscall.rs Project Developers. See the // COPYRIGHT file at the top-level directory of this distribution. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. #[macro_use] extern crate sc; #[cfg(target_os = "linux")] #[test] fn ebadf() { static MESSAGE: &'static str = "Hello, world!"; unsafe { assert_eq!(syscall!(WRITE, 4, MESSAGE.as_ptr(), MESSAGE.len()) as isize, -9) } } // getpid() is POSIX but that doesn't guarantee it's a system call. #[cfg(any(target_os = "linux", target_os = "freebsd"))] #[test] fn getpid() { unsafe { assert!(0 < sc::syscall0(sc::nr::GETPID)); } } #[cfg(any(target_os = "linux", target_os = "freebsd"))] #[test] fn getpid_macro() { unsafe { assert!(0 < syscall!(GETPID)); } }