diff --git a/l0dable/src/lib.rs b/l0dable/src/lib.rs
index d5dd5f463dd622645daeeb7cbbc3ae1b40324aa2..ea56688f4c0408bdef787b7ab7ec99ae0164ad75 100644
--- a/l0dable/src/lib.rs
+++ b/l0dable/src/lib.rs
@@ -58,6 +58,50 @@ pub mod ctypes {
     pub use core::ffi::c_void;
 }
 
+pub mod errno {
+    #![allow(non_snake_case)]
+    use crate::ctypes::c_int;
+
+    pub const EPERM: c_int = 1; // Operation not permitted
+    pub const ENOENT: c_int = 2; // No such file or directory
+    pub const ESRCH: c_int = 3; // No such process
+    pub const EINTR: c_int = 4; // Interrupted system call
+    pub const EIO: c_int = 5; // I/O error
+    pub const ENXIO: c_int = 6; // No such device or address
+    pub const E2BIG: c_int = 7; // Argument list too long
+    pub const ENOEXEC: c_int = 8; // Exec format error
+    pub const EBADF: c_int = 9; // Bad file number
+    pub const ECHILD: c_int = 10; // No child processes
+    pub const EAGAIN: c_int = 11; // Try again
+    pub const ENOMEM: c_int = 12; //Out of memory
+    pub const EACCES: c_int = 13; //Permission denied
+    pub const EFAULT: c_int = 14; //Bad address
+    pub const ENOTBLK: c_int = 15; //Block device required
+    pub const EBUSY: c_int = 16; //Device or resource busy
+    pub const EEXIST: c_int = 17; //File exists
+    pub const EXDEV: c_int = 18; //Cross-device link
+    pub const ENODEV: c_int = 19; //No such device
+    pub const ENOTDIR: c_int = 20; //Not a directory
+    pub const EISDIR: c_int = 21; //Is a directory
+    pub const EINVAL: c_int = 22; //Invalid argument
+    pub const ENFILE: c_int = 23; //File table overflow
+    pub const EMFILE: c_int = 24; //Too many open files
+    pub const ENOTTY: c_int = 25; //Not a typewriter
+    pub const ETXTBSY: c_int = 26; //Text file busy
+    pub const EFBIG: c_int = 27; //File too large
+    pub const ENOSPC: c_int = 28; //No space left on device
+    pub const ESPIPE: c_int = 29; //Illegal seek
+    pub const EROFS: c_int = 30; //Read-only file system
+    pub const EMLINK: c_int = 31; //Too many links
+    pub const EPIPE: c_int = 32; //Broken pipe
+    pub const EDOM: c_int = 33; //Math argument out of domain of func
+    pub const ERANGE: c_int = 34; //Math result not representable
+    pub const EAFNOSUPPORT: c_int = 97; //Address family not supported by protocol
+    pub const ECONNRESET: c_int = 104; //Connection timed out
+    pub const ETIMEDOUT: c_int = 110; //Connection timed out
+    pub const EINPROGRESS: c_int = 115; //Operation now in progress
+}
+
 pub mod bindings {
     #![allow(non_upper_case_globals)]
     #![allow(non_camel_case_types)]