Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 11 additions & 12 deletions srcs/cli/commands.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ pub fn command_entry(cmd_id: usize, ptr: *mut String, len: usize, cap: usize) {
unsafe {
let args: Vec<String> = Vec::from_raw_parts(ptr, len, cap);
// notify parent that vector has been copied
sys_kill(sys_getppid(), SignalType::SIGHUP as i32);
sys_kill(sys_getppid(), SignalType::SigHup as i32);
COMMANDS[cmd_id](args);
}
}
Expand Down Expand Up @@ -144,7 +144,6 @@ fn kill(command: Vec<String>) {

if res != 0 {
kprintln!("[Error]: {}", res);
return;
}
}

Expand Down Expand Up @@ -221,7 +220,7 @@ fn hextou(string: &str) -> Option<usize> {
let byte = i.to_digit(16).unwrap();
addr = (addr << 4) | (byte & 0xf) as usize;
}
return Some(addr);
Some(addr)
}

fn atou(string: &str) -> Option<usize> {
Expand Down Expand Up @@ -320,7 +319,7 @@ impl Command {
if self.command.len() < MAX_CMD_LENGTH {
self.command.insert(self.index, x);
self.index += 1;
return Ok(());
Ok(())
} else {
Err(())
}
Expand All @@ -338,18 +337,18 @@ impl Command {
pub fn is_known(&self) -> Option<usize> {
let mut j = 0;
while j < KNOWN_CMD.len() {
let cmd: &str = self.command.split(" ").nth(0)?;
if Some(cmd) == Some(&KNOWN_CMD[j].to_string()) {
let cmd: &str = self.command.split(' ').next()?;
if Some(cmd) == Some(KNOWN_CMD[j]) {
return Some(j);
}
j += 1;
}
return None;
None
}

pub fn handle(&mut self, charcode: char) {
if charcode == '\x08' {
if self.command.len() != 0 && self.index != 0 {
if !self.command.is_empty() && self.index != 0 {
self.command.remove(self.index - 1);
let tmp: &str =
&self.command[self.index - 1..self.command.len()];
Expand All @@ -363,7 +362,7 @@ impl Command {
.lock()
.move_cursor(-(tmp.len() as i32));
}
} else if charcode >= ' ' && charcode <= '~' {
} else if (' '..='~').contains(&charcode) {
if self.insert(charcode).is_err() {
kprintln!("Can't handle longer command, clearing buffer");
kprint!("$> ");
Expand Down Expand Up @@ -400,19 +399,19 @@ impl Command {
cap
);
loop {
if LOCK_CMD == false {
if !LOCK_CMD {
break;
}
crate::time::sleep(1);
}
if background == false {
if !background {
let mut wstatus: i32 = 0;
sys_waitpid(pid, &mut wstatus, 0);
}
}
},
_ => {
if self.command.len() != 0 {
if !self.command.is_empty() {
kprintln!("Unknown command. Type `help` to list available commands");
}
},
Expand Down
2 changes: 1 addition & 1 deletion srcs/cli/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ pub fn cli() {
*INPUT_BUFFER.lock() = Some(Queue::new());

unsafe { LOCK_CMD = false };
sys_signal(SignalType::SIGHUP as i32, unlock_cmd);
sys_signal(SignalType::SigHup as i32, unlock_cmd);
loop {
if INPUT_BUFFER.lock().as_ref().unwrap().is_empty() {
unsafe {
Expand Down
2 changes: 1 addition & 1 deletion srcs/debug.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ macro_rules! dprintln {
() => ($crate::dprint!("\n"));
($($arg:tt)*) => (
$crate::dprint!("[{: >12.6}] {}\n",
crate::time::get_timestamp().as_f64(),
$crate::time::get_timestamp().as_f64(),
format_args!($($arg)*))
)
}
Expand Down
246 changes: 123 additions & 123 deletions srcs/errno.rs
Original file line number Diff line number Diff line change
@@ -1,129 +1,129 @@
#[derive(Copy, Clone, PartialEq)]
pub enum ErrNo {
EPERM = 1, // Operation not permitted
ENOENT = 2, // No such file or directory
ESRCH = 3, // No such process
EINTR = 4, // Interrupted system call
EIO = 5, // I/O error
ENXIO = 6, // No such device or address
E2BIG = 7, // Arg list too long
ENOEXEC = 8, // Exec format error
EBADF = 9, // Bad file number
ECHILD = 10, // No child processes
EAGAIN = 11, // Try again
ENOMEM = 12, // Out of memory
EACCES = 13, // Permission denied
EFAULT = 14, // Bad address
ENOTBLK = 15, // Block device required
EBUSY = 16, // Device or resource busy
EEXIST = 17, // File exists
EXDEV = 18, // Cross-device link
ENODEV = 19, // No such device
ENOTDIR = 20, // Not a directory
EISDIR = 21, // Is a directory
EINVAL = 22, // Invalid argument
ENFILE = 23, // File table overflow
EMFILE = 24, // Too many open files
ENOTTY = 25, // Not a typewriter
ETXTBSY = 26, // Text file busy
EFBIG = 27, // File too large
ENOSPC = 28, // No space left on device
ESPIPE = 29, // Illegal seek
EROFS = 30, // Read-only file system
EMLINK = 31, // Too many links
EPIPE = 32, // Broken pipe
EDOM = 33, // Math argument out of domain of func
ERANGE = 34, // Math result not representable
EDEADLK = 35, // Resource deadlock would occur
ENAMETOOLONG = 36, // File name too long
ENOLCK = 37, // No record locks available
ENOSYS = 38, // Function not implemented
ENOTEMPTY = 39, // Directory not empty
ELOOP = 40, // Too many symbolic links encountered
EWOULDBLOCK = 41, // Operation would block
ENOMSG = 42, // No message of desired type
EIDRM = 43, // Identifier removed
ECHRNG = 44, // Channel number out of range
EL2NSYNC = 45, // Level 2 not synchronized
EL3HLT = 46, // Level 3 halted
EL3RST = 47, // Level 3 reset
ELNRNG = 48, // Link number out of range
EUNATCH = 49, // Protocol driver not attached
ENOCSI = 50, // No CSI structure available
EL2HLT = 51, // Level 2 halted
EBADE = 52, // Invalid exchange
EBADR = 53, // Invalid request descriptor
EXFULL = 54, // Exchange full
ENOANO = 55, // No anode
EBADRQC = 56, // Invalid request code
EBADSLT = 57, // Invalid slot
EDEADLOCK = 58, // File locking deadlock error
EBFONT = 59, // Bad font file format
ENOSTR = 60, // Device not a stream
ENODATA = 61, // No data available
ETIME = 62, // Timer expired
ENOSR = 63, // Out of streams resources
ENONET = 64, // Machine is not on the network
ENOPKG = 65, // Package not installed
EREMOTE = 66, // Object is remote
ENOLINK = 67, // Link has been severed
EADV = 68, // Advertise error
ESRMNT = 69, // Srmount error
ECOMM = 70, // Communication error on send
EPROTO = 71, // Protocol error
EMULTIHOP = 72, // Multihop attempted
EDOTDOT = 73, // RFS specific error
EBADMSG = 74, // Not a data message
EOVERFLOW = 75, // Value too large for defined data type
ENOTUNIQ = 76, // Name not unique on network
EBADFD = 77, // File descriptor in bad state
EREMCHG = 78, // Remote address changed
ELIBACC = 79, // Can not access a needed shared library
ELIBBAD = 80, // Accessing a corrupted shared library
ELIBSCN = 81, // .lib section in a.out corrupted
ELIBMAX = 82, /* Attempting to link in too many shared libraries */
ELIBEXEC = 83, // Cannot exec a shared library directly
EILSEQ = 84, // Illegal byte sequence
ERESTART = 85, // Interrupted system call should be restarted
ESTRPIPE = 86, // Streams pipe error
EUSERS = 87, // Too many users
ENOTSOCK = 88, // Socket operation on non-socket
EDESTADDRREQ = 89, // Destination address required
EMSGSIZE = 90, // Message too long
EPROTOTYPE = 91, // Protocol wrong type for socket
ENOPROTOOPT = 92, // Protocol not available
EPROTONOSUPPORT = 93, // Protocol not supported
ESOCKTNOSUPPORT = 94, // Socket type not supported
EOPNOTSUPP = 95, // Operation not supported on transport endpoint
EPFNOSUPPORT = 96, // Protocol family not supported
EAFNOSUPPORT = 97, // Address family not supported by protocol
EADDRINUSE = 98, // Address already in use
EADDRNOTAVAIL = 99, // Cannot assign requested address
ENETDOWN = 100, // Network is down
ENETUNREACH = 101, // Network is unreachable
ENETRESET = 102, // Network dropped connection because of reset
ECONNABORTED = 103, // Software caused connection abort
ECONNRESET = 104, // Connection reset by peer
ENOBUFS = 105, // No buffer space available
EISCONN = 106, // Transport endpoint is already connected
ENOTCONN = 107, // Transport endpoint is not connected
ESHUTDOWN = 108, // Cannot send after transport endpoint shutdown
ETOOMANYREFS = 109, // Too many references: cannot splice
ETIMEDOUT = 110, // Connection timed out
ECONNREFUSED = 111, // Connection refused
EHOSTDOWN = 112, // Host is down
EHOSTUNREACH = 113, // No route to host
EALREADY = 114, // Operation already in progress
EINPROGRESS = 115, // Operation now in progress
ESTALE = 116, // Stale NFS file handle
EUCLEAN = 117, // Structure needs cleaning
ENOTNAM = 118, // Not a XENIX named type file
ENAVAIL = 119, // No XENIX semaphores available
EISNAM = 120, // Is a named type file
EREMOTEIO = 121, // Remote I/O error
Perm = 1, // Operation not permitted
NoEnt = 2, // No such file or directory
Srch = 3, // No such process
Intr = 4, // Interrupted system call
IO = 5, // I/O error
NXio = 6, // No such device or address
TooBig = 7, // Arg list too long
NoExec = 8, // Exec format error
BadF = 9, // Bad file number
Child = 10, // No child processes
Again = 11, // Try again
NoMem = 12, // Out of memory
Acces = 13, // Permission denied
Fault = 14, // Bad address
NotBlk = 15, // Block device required
Busy = 16, // Device or resource busy
Exist = 17, // File exists
XDev = 18, // Cross-device link
NoDev = 19, // No such device
NotDir = 20, // Not a directory
IsDir = 21, // Is a directory
Inval = 22, // Invalid argument
NFile = 23, // File table overflow
MFile = 24, // Too many open files
NoTTY = 25, // Not a typewriter
TxtBsy = 26, // Text file busy
FBig = 27, // File too large
NoSpc = 28, // No space left on device
SPipe = 29, // Illegal seek
ROFs = 30, // Read-only file system
MLink = 31, // Too many links
Pipe = 32, // Broken pipe
Dom = 33, // Math argument out of domain of func
Range = 34, // Math result not representable
DeadLk = 35, // Resource deadlock would occur
NameTooLong = 36, // File name too long
NoLck = 37, // No record locks available
NoSys = 38, // Function not implemented
NotEmpty = 39, // Directory not empty
Loop = 40, // Too many symbolic links encountered
WouldBlock = 41, // Operation would block
NoMsg = 42, // No message of desired type
IdRm = 43, // Identifier removed
ChRng = 44, // Channel number out of range
L2NSync = 45, // Level 2 not synchronized
L3Hlt = 46, // Level 3 halted
L3Rst = 47, // Level 3 reset
LNRng = 48, // Link number out of range
UnAtch = 49, // Protocol driver not attached
NoCSI = 50, // No CSI structure available
L2Hlt = 51, // Level 2 halted
BadE = 52, // Invalid exchange
BadR = 53, // Invalid request descriptor
XFull = 54, // Exchange full
NoAno = 55, // No anode
BadRqC = 56, // Invalid request code
BadSlt = 57, // Invalid slot
Deadlock = 58, // File locking deadlock error
BFont = 59, // Bad font file format
NoStr = 60, // Device not a stream
NoData = 61, // No data available
Time = 62, // Timer expired
NoSR = 63, // Out of streams resources
NoNet = 64, // Machine is not on the network
NoPkg = 65, // Package not installed
Remote = 66, // Object is remote
NoLink = 67, // Link has been severed
Adv = 68, // Advertise error
SrMnt = 69, // Srmount error
Comm = 70, // Communication error on send
Proto = 71, // Protocol error
Multihop = 72, // Multihop attempted
DotDot = 73, // RFS specific error
BadMsg = 74, // Not a data message
Overflow = 75, // Value too large for defined data type
NotUniq = 76, // Name not unique on network
BadFd = 77, // File descriptor in bad state
RemChg = 78, // Remote address changed
LibAcc = 79, // Can not access a needed shared library
LibBad = 80, // Accessing a corrupted shared library
LibScn = 81, // .lib section in a.out corrupted
LibMax = 82, /* Attempting to link in too many shared libraries */
LibExec = 83, // Cannot exec a shared library directly
IlSeq = 84, // Illegal byte sequence
Restart = 85, // Interrupted system call should be restarted
StrPipe = 86, // Streams pipe error
Users = 87, // Too many users
NotSock = 88, // Socket operation on non-socket
DestAddrReq = 89, // Destination address required
MsgSize = 90, // Message too long
Prototype = 91, // Protocol wrong type for socket
NoProtoOpt = 92, // Protocol not available
ProtoNoSupport = 93, // Protocol not supported
SocktNoSupport = 94, // Socket type not supported
OpNotSupp = 95, // Operation not supported on transport endpoint
PFNoSupport = 96, // Protocol family not supported
AFNoSupport = 97, // Address family not supported by protocol
AddrInUse = 98, // Address already in use
AddrNotAvail = 99, // Cannot assign requested address
NetDown = 100, // Network is down
NetUnreach = 101, // Network is unreachable
NetReset = 102, // Network dropped connection because of reset
ConnAborted = 103, // Software caused connection abort
ConnReset = 104, // Connection reset by peer
NoBufs = 105, // No buffer space available
IsConn = 106, // Transport endpoint is already connected
NotConn = 107, // Transport endpoint is not connected
Shutdown = 108, // Cannot send after transport endpoint shutdown
TooManyRefs = 109, // Too many references: cannot splice
Timedout = 110, // Connection timed out
ConnRefused = 111, // Connection refused
HostDown = 112, // Host is down
HostUnreach = 113, // No route to host
Already = 114, // Operation already in progress
InProgress = 115, // Operation now in progress
Stale = 116, // Stale NFS file handle
UClean = 117, // Structure needs cleaning
NotNam = 118, // Not a XENIX named type file
NAvail = 119, // No XENIX semaphores available
IsNam = 120, // Is a named type file
RemoteIO = 121, // Remote I/O error
// Should never be seen by user programs
ERESTARTSYS = 512,
ERESTARTNOINTR = 513
RestartSys = 512,
RestartNoIntr = 513
}

use core::fmt;
Expand Down
Loading