1#![cfg_attr(all(not(test), not(doc)), no_std)]
29#![feature(doc_cfg)]
30#![feature(doc_auto_cfg)]
31#![feature(thread_local)]
32#![allow(clippy::missing_safety_doc)]
33
34#[cfg(feature = "alloc")]
35extern crate alloc;
36
37#[path = "."]
38mod ctypes {
39 #[rustfmt::skip]
40 #[path = "libctypes_gen.rs"]
41 #[allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals, clippy::upper_case_acronyms)]
42 mod libctypes;
43
44 pub use arceos_posix_api::ctypes::*;
45 pub use libctypes::*;
46}
47
48#[macro_use]
49mod utils;
50
51#[cfg(feature = "fd")]
52mod fd_ops;
53#[cfg(feature = "fs")]
54mod fs;
55#[cfg(any(feature = "select", feature = "epoll"))]
56mod io_mpx;
57#[cfg(feature = "alloc")]
58mod malloc;
59#[cfg(feature = "net")]
60mod net;
61#[cfg(feature = "pipe")]
62mod pipe;
63#[cfg(feature = "multitask")]
64mod pthread;
65#[cfg(feature = "alloc")]
66mod strftime;
67#[cfg(feature = "fp_simd")]
68mod strtod;
69
70mod errno;
71mod io;
72mod mktime;
73mod rand;
74mod resource;
75mod setjmp;
76mod sys;
77mod time;
78mod unistd;
79
80#[cfg(not(test))]
81pub use self::io::write;
82pub use self::io::{read, writev};
83
84pub use self::errno::strerror;
85pub use self::mktime::mktime;
86pub use self::rand::{rand, random, srand};
87pub use self::resource::{getrlimit, setrlimit};
88pub use self::setjmp::{longjmp, setjmp};
89pub use self::sys::sysconf;
90pub use self::time::{clock_gettime, nanosleep};
91pub use self::unistd::{abort, exit, getpid};
92
93#[cfg(feature = "alloc")]
94pub use self::malloc::{free, malloc};
95#[cfg(feature = "alloc")]
96pub use self::strftime::strftime;
97
98#[cfg(feature = "fd")]
99pub use self::fd_ops::{ax_fcntl, close, dup, dup2, dup3};
100
101#[cfg(feature = "fs")]
102pub use self::fs::{ax_open, fstat, getcwd, lseek, lstat, rename, stat};
103
104#[cfg(feature = "net")]
105pub use self::net::{
106 accept, bind, connect, freeaddrinfo, getaddrinfo, getpeername, getsockname, listen, recv,
107 recvfrom, send, sendto, shutdown, socket,
108};
109
110#[cfg(feature = "multitask")]
111pub use self::pthread::{pthread_create, pthread_exit, pthread_join, pthread_self};
112#[cfg(feature = "multitask")]
113pub use self::pthread::{pthread_mutex_init, pthread_mutex_lock, pthread_mutex_unlock};
114
115#[cfg(feature = "pipe")]
116pub use self::pipe::pipe;
117
118#[cfg(feature = "select")]
119pub use self::io_mpx::select;
120#[cfg(feature = "epoll")]
121pub use self::io_mpx::{epoll_create, epoll_ctl, epoll_wait};
122
123#[cfg(feature = "fp_simd")]
124pub use self::strtod::{strtod, strtof};