Skip to content
Snippets Groups Projects
Commit a8a73f87 authored by Jeremy Soller's avatar Jeremy Soller
Browse files

Merge branch 'procfs' into 'master'

Implement #include<sys/user.h> and #include<sys/procfs.h>

See merge request !266
parents 763bb248 3a923aa6
No related branches found
No related tags found
No related merge requests found
#ifndef _SYS_USER_H
#define _SYS_USER_H
#if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_AMD64)
#include <arch/x64/user.h>
#elif defined(__aarch64__)
#include <arch/aarch64/user.h>
#else
#error "Unknown architecture"
#endif
#endif
\ No newline at end of file
sys_includes = []
include_guard = "_AARCH64_USER_H"
language = "C"
style = "Tag"
[enum]
prefix_with_name = true
use crate::platform::types::*;
#[repr(C)]
pub struct user_regs_struct {
pub regs: [c_ulonglong; 31],
pub sp: c_ulonglong,
pub pc: c_ulonglong,
pub pstate: c_ulonglong,
}
#[repr(C)]
pub struct user_fpsimd_struct {
pub vregs: [c_double; 32], // BUG: rust doesn't have f128 which is equivalent for long double
pub fpsr: c_uint,
pub fpcr: c_uint,
}
pub type elf_greg_t = c_ulong;
pub type elf_gregset_t = [c_ulong; 34];
pub type elf_fpregset_t = user_fpsimd_struct;
#[no_mangle]
pub extern "C" fn _cbindgen_only_generates_structs_if_they_are_mentioned_which_is_dumb_aarch64_user(
a: user_regs_struct,
b: user_fpsimd_struct,
c: elf_gregset_t,
d: elf_greg_t,
e: elf_fpregset_t,
) {
}
sys_includes = [] sys_includes = []
include_guard = "_SYS_USER_H" include_guard = "_X64_USER_H"
language = "C" language = "C"
style = "Tag" style = "Tag"
......
...@@ -48,9 +48,36 @@ pub struct user_regs_struct { ...@@ -48,9 +48,36 @@ pub struct user_regs_struct {
pub gs: c_ulong, pub gs: c_ulong,
} }
pub type elf_greg_t = c_ulong;
pub type elf_gregset_t = [c_ulong; 27];
pub type elf_fpregset_t = user_fpregs_struct;
#[repr(C)]
pub struct user {
pub regs: user_regs_struct,
pub u_fpvalid: c_int,
pub i387: user_fpregs_struct,
pub u_tsize: c_ulong,
pub u_dsize: c_ulong,
pub u_ssize: c_ulong,
pub start_code: c_ulong,
pub start_stack: c_ulong,
pub signal: c_long,
pub reserved: c_int,
pub u_ar0: *mut user_regs_struct,
pub u_fpstate: *mut user_fpregs_struct,
pub magic: c_ulong,
pub u_comm: [c_char; 32],
pub u_debugreg: [c_ulong; 8],
}
#[no_mangle] #[no_mangle]
pub extern "C" fn _cbindgen_only_generates_structs_if_they_are_mentioned_which_is_dumb( pub extern "C" fn _cbindgen_only_generates_structs_if_they_are_mentioned_which_is_dumb_x86_user(
a: user_fpregs_struct, a: user_fpregs_struct,
b: user_regs_struct, b: user_regs_struct,
c: user,
d: elf_gregset_t,
e: elf_greg_t,
f: elf_fpregset_t,
) { ) {
} }
...@@ -47,9 +47,11 @@ pub mod sys_time; ...@@ -47,9 +47,11 @@ pub mod sys_time;
pub mod sys_timeb; pub mod sys_timeb;
//pub mod sys_times; //pub mod sys_times;
pub mod _wctype; pub mod _wctype;
pub mod arch_aarch64_user;
pub mod arch_x64_user;
pub mod sys_procfs;
pub mod sys_uio; pub mod sys_uio;
pub mod sys_un; pub mod sys_un;
pub mod sys_user;
pub mod sys_utsname; pub mod sys_utsname;
pub mod sys_wait; pub mod sys_wait;
pub mod termios; pub mod termios;
......
sys_includes = ["sys/user.h"]
include_guard = "_SYS_PROCFS_H"
language = "C"
style = "Tag"
[enum]
prefix_with_name = true
#[cfg(target_arch = "aarch64")]
use crate::header::arch_aarch64_user::*;
#[cfg(target_arch = "x86_64")]
use crate::header::arch_x64_user::*;
use crate::platform::types::*;
pub const ELF_PRARGSZ: size_t = 80;
#[repr(C)]
pub struct elf_siginfo {
pub si_signo: c_int,
pub si_code: c_int,
pub si_errno: c_int,
}
#[repr(C)]
pub struct time {
pub tv_sec: c_long,
pub tv_usec: c_long,
}
#[repr(C)]
pub struct elf_prstatus {
pub pr_info: elf_siginfo,
pub pr_cursig: c_short,
pub pr_sigpend: c_ulong,
pub pr_sighold: c_ulong,
pub pr_pid: pid_t,
pub pr_ppid: pid_t,
pub pr_pgrp: pid_t,
pub pr_sid: pid_t,
pub pr_utime: time,
pub pr_stime: time,
pub pr_cutime: time,
pub pr_cstime: time,
pub pr_reg: elf_gregset_t,
pub pr_fpvalid: c_int,
}
#[repr(C)]
pub struct elf_prpsinfo {
pub pr_state: c_char,
pub pr_sname: c_char,
pub pr_zomb: c_char,
pub pr_nice: c_char,
pub pr_flag: c_uint,
pub pr_uid: c_uint,
pub pr_gid: c_uint,
pub pr_pid: c_int,
pub pr_ppid: c_int,
pub pr_pgrp: c_int,
pub pr_sid: c_int,
pub pr_fname: [c_char; 16],
pub pr_psargs: [c_char; ELF_PRARGSZ],
}
pub type psaddr_t = *mut c_void;
pub type prgregset_t = elf_gregset_t;
pub type prfpregset_t = elf_fpregset_t;
pub type lwpid_t = pid_t;
pub type prstatus_t = elf_prstatus;
pub type prpsinfo_t = elf_prpsinfo;
#[no_mangle]
pub extern "C" fn _cbindgen_only_generates_structs_if_they_are_mentioned_which_is_dumb_procfs(
a: psaddr_t,
b: prgregset_t,
c: prfpregset_t,
d: lwpid_t,
e: prstatus_t,
f: prpsinfo_t,
) {
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment