All Projects → mahkoh → uapi

mahkoh / uapi

Licence: other
Unix API

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to uapi

Ecominit
eComInit is a free init system and service manager designed to scale from lightweight desktops to web-scale cloud deployments. It aims to offer feature-parity with systemd but with a modular, portable architecture compliant with software engineering best-practice.
Stars: ✭ 352 (+1855.56%)
Mutual labels:  freebsd, unix, openbsd
InitWare
The InitWare Suite of Middleware allows you to manage services and system resources as logical entities called units. Its main component is a service management ("init") system.
Stars: ✭ 164 (+811.11%)
Mutual labels:  freebsd, unix, openbsd
Awesome Unix
All the UNIX and UNIX-Like: Linux, BSD, macOS, Illumos, 9front, and more.
Stars: ✭ 973 (+5305.56%)
Mutual labels:  freebsd, unix, openbsd
InitKit
Neo-InitWare is a modular, cross-platform reimplementation of the systemd init system. It is experimental.
Stars: ✭ 364 (+1922.22%)
Mutual labels:  freebsd, unix, openbsd
Mg
Micro (GNU) Emacs-like text editor ❤️ public-domain
Stars: ✭ 117 (+550%)
Mutual labels:  freebsd, unix, openbsd
WendzelNNTPd
A usable and IPv6-ready Usenet-server (NNTP daemon). It is portable (Linux/*BSD/*nix), supports AUTHINFO authentication, contains ACL as well as role based ACL and provides "invisible" newsgroups. It can run on MySQL and SQLite backends.
Stars: ✭ 43 (+138.89%)
Mutual labels:  freebsd, unix, openbsd
uac
UAC is a Live Response collection script for Incident Response that makes use of native binaries and tools to automate the collection of AIX, Android, ESXi, FreeBSD, Linux, macOS, NetBSD, NetScaler, OpenBSD and Solaris systems artifacts.
Stars: ✭ 260 (+1344.44%)
Mutual labels:  freebsd, openbsd
default-gateway
Get the default network gateway, cross-platform.
Stars: ✭ 77 (+327.78%)
Mutual labels:  freebsd, openbsd
gsmartcontrol
GSmartControl - Hard disk drive and SSD health inspection tool
Stars: ✭ 183 (+916.67%)
Mutual labels:  freebsd, openbsd
Awesome-BSD-Ports-Programs-And-Projects
A Repo Detailing BSD Ports, Programs, and Projects.
Stars: ✭ 46 (+155.56%)
Mutual labels:  freebsd, openbsd
lobase
Port of the OpenBSD userland to Linux.
Stars: ✭ 89 (+394.44%)
Mutual labels:  unix, openbsd
GoRAT
GoRAT (Go Remote Access Tool) is an extremely powerful reverse shell, file server, and control plane using HTTPS reverse tunnels as a transport mechanism.
Stars: ✭ 34 (+88.89%)
Mutual labels:  freebsd, openbsd
osutil
Go library to easily detect current operating system, current Linux distribution, macOS version and more...
Stars: ✭ 22 (+22.22%)
Mutual labels:  freebsd, openbsd
BlackBox
Oberon Microsystems BlackBox Component Builder port for OpenBSD, GNU/Linux and FreeBSD
Stars: ✭ 24 (+33.33%)
Mutual labels:  freebsd, openbsd
FreeBSD-Ask
FreeBSD 教程——FreeBSD 从入门到跑路。
Stars: ✭ 113 (+527.78%)
Mutual labels:  freebsd, unix
airyx
A BSD-based OS project that aims to provide an experience like and some compatibility with macOS (formerly known as airyxOS)
Stars: ✭ 2,490 (+13733.33%)
Mutual labels:  freebsd, unix
mg
OpenBSD Mg editor. Portable Public Domain Micro Emacs for *BSD, Cygwin, Linux, Mac OS X.
Stars: ✭ 99 (+450%)
Mutual labels:  unix, openbsd
psutil
Cross-platform lib for process and system monitoring in Python
Stars: ✭ 8,488 (+47055.56%)
Mutual labels:  freebsd, openbsd
OpenBSDFirewall
Simple OpenBSD Home Firewall Config for ALIX Board
Stars: ✭ 41 (+127.78%)
Mutual labels:  unix, openbsd
packetdrill
packetdrill with UDPLite and SCTP support and bug fixes for FreeBSD
Stars: ✭ 37 (+105.56%)
Mutual labels:  freebsd, openbsd

Unix API

crates.io docs.rs

This crate contains safe wrappers around Unix APIs.

Supported Targets

A target is supported if and only if the crate is tested against it via CI.

The following targets are supported:

  • x86_64-unknown-linux-gnu (glibc >= 2.23)
  • x86_64-unknown-linux-musl (musl >= 1.1.19)
  • x86_64-unknown-freebsd (12)
  • x86_64-unknown-openbsd (6.7)
  • x86_64-apple-darwin (10.15)

This crate contains little architecture-specific code. Therefore, other architectures (arm, aarch64, etc.) will probably also work.

Future changes

This crate fully supports reading into uninitialized buffers but the API will most likely change when the same functionality becomes stable in libstd.

Comparison with other crates

libc

This crate builds on the libc crate and uses its declarations of the raw OS APIs if possible. This crate considers itself to be the next step up from libc: It safely wraps the raw OS functions but does little beyond that. Integer parameters are still integer parameters, functions operating on sockets accept the socket file descriptor as a raw integer, there is no socket wrapper type, etc.

At the same time, this crate provides the necessary tools to make it as easy to use from Rust as the raw APIs are to use from C. For example, all of the following just work:

open("./file", c::O_RDWR, 0);
open(b"./file", c::O_RDWR, 0);
open(CStr::from_ptr(p), c::O_RDWR, 0);
open(Path::new("./file"), c::O_RDWR, 0);

See the crate documentation for more details.

nix

  • nix uses a nested module structure. uapi exports all APIs in the crate root.
  • nix I/O works on [u8]. uapi I/O works on [MaybeUninit<u8>].
  • nix uses enums and bitflags for integer/flag parameters. uapi uses plain integers.
  • nix uses methods declared on wrapper types to expose APIs. uapi uses free functions unless doing so would be unsafe.
  • nix uses enums for the values produced and consumed by certain generic OS APIs (e.g. control messages.) uapi uses generic functions that do not restrict the types that can be used.

License

This project is licensed under either of

  • Apache License, Version 2.0
  • MIT License

at your option.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].