|
enum class | ProcessorFeatures {
None = 0
, Smep = (1 << 0)
, Smap = (1 << 1)
, Sse = (1 << 2)
,
Sse2 = (1 << 3)
, Fxsr = (1 << 4)
, Mmx = (1 << 5)
, Sse3 = (1 << 6)
,
Ssse3 = (1 << 7)
, Sse4_1 = (1 << 8)
, Sse4_2 = (1 << 9)
, Xsave = (1 << 10)
,
Avx = (1 << 11)
, Avx2 = (1 << 12)
, Avx512 = (1 << 13)
, FsGsBase = (1 << 14)
,
Apic = (1 << 15)
, X2Apic = (1 << 16)
, GibPages = (1 << 17)
} |
|
enum class | PathLookupFlags { None = 0
, Create = (1 << 0)
} |
|
enum class | IrqStatus { Handled
, Unknown
} |
|
enum class | ShutdownStatus { Error
, Intended
, DoubleFault
} |
|
enum class | TimerCapabilities { SingleShot = 1 << 0
, Periodic = 1 << 1
, PerCpu = 1 << 2
, NeedsCalibration = 1 << 3
} |
|
enum class | Error : unsigned long {
Success = 0
, AddressFamilyNotSupported = 1
, AddressInUse = 2
, AddressNotAvailable = 3
,
AlreadyConnected = 4
, ArgumentListTooLong = 5
, ArgumentOutOfDomain = 6
, BadAddress = 7
,
BadFileDescriptor = 8
, BadMessage = 9
, BrokenPipe = 10
, ConnectionAborted = 11
,
ConnectionAlreadyInProgress = 12
, ConnectionRefused = 13
, ConnectionReset = 14
, CrossDeviceLink = 15
,
DestinationAddressRequired = 16
, DeviceOrResourceBusy = 17
, DirectoryNotEmpty = 18
, ExecutableFormatError = 19
,
FileExists = 20
, FileTooLarge = 21
, FilenameTooLong = 22
, FunctionNotSupported = 23
,
HostUnreachable = 24
, IdentifierRemoved = 25
, IllegalByteSequence = 26
, InappropriateIoControlOperation = 27
,
Interrupted = 28
, InvalidArgument = 29
, InvalidSeek = 30
, IoError = 31
,
IsADirectory = 32
, MessageSize = 33
, NetworkDown = 34
, NetworkReset = 35
,
NetworkUnreachable = 36
, NoBufferSpace = 37
, NoChildProcess = 38
, NoLink = 39
,
NoLockAvailable = 40
, NoMessageAvailable = 41
, NoMessage = 42
, NoProtocolOption = 43
,
NoSpaceOnDevice = 44
, NoStreamResources = 45
, NoSuchDeviceOrAddress = 46
, NoSuchDevice = 47
,
NoSuchFileOrDirectory = 48
, NoSuchProcess = 49
, NotADirectory = 50
, NotASocket = 51
,
NotAStream = 52
, NotConnected = 53
, NotEnoughMemory = 54
, NotSupported = 55
,
OperationCanceled = 56
, OperationInProgress = 57
, OperationNotPermitted = 58
, OperationNotSupported = NotSupported
,
OperationWouldBlock = 59
, OwnerDead = 60
, PermissionDenied = 61
, ProtocolError = 62
,
ProtocolNotSupported = 63
, ReadOnlyFileSystem = 64
, ResourceDeadlockWouldOccur = 65
, ResourceUnavailableTryAgain = OperationWouldBlock
,
ResultOutOfRange = 66
, StateNotRecoverable = 67
, StreamTimeout = 68
, TextFileBusy = 69
,
TimedOut = 70
, TooManyFilesOpenInSystem = 71
, TooManyFilesOpen = 72
, TooManyLinks = 73
,
TooManySymbolicLinkLevels = 74
, ValueTooLarge = 75
, WrongProtocolType = 76
} |
|
enum class | MetadataType : u8 { Unknown = 0
, Regular = 1
, Directory = 2
} |
|
enum class | OpenMode : u32 { None = 0
, Create = (1 << 0)
, Mask = Create
} |
|
enum class | SystemCall {
debug_print = 0
, shutdown = 1
, exit_task = 2
, create_task = 3
,
load_executable = 4
, start_task = 5
, allocate_memory = 6
, open = 7
,
read = 8
, write = 9
, close = 10
, start_task_and_block = 11
,
set_userspace_thread_pointer = 12
, set_userspace_stack_pointer = 13
, set_userspace_instruction_pointer = 14
, set_userspace_argument1 = 15
,
lseek = 16
, set_task_arguments = 17
, path_metadata = 18
, read_directory = 19
,
truncate = 20
, create_node = 21
, write_audio = 22
} |
|
|
void | log_output_character (c32 value) |
|
auto | copy_to_user (di::Span< byte const > kernel_data, byte *userspace_ptr) -> Expected< void > |
|
auto | copy_from_user (di::Span< byte const > userspace_data, byte *kernel_ptr) -> Expected< void > |
|
auto | validate_user_region (mm::VirtualAddress userspace_address, usize count, usize size) -> Expected< void > |
|
void | setup_current_processor_access () |
| Setups access to the current processor.
|
|
void | set_current_processor (Processor &processor) |
| Sets the current processor address.
|
|
auto | irq_number_for_legacy_isa_interrupt_number (IrqLine irq_line) -> Expected< GlobalIrqNumber > |
|
auto | irq_controller_for_interrupt_number (GlobalIrqNumber irq_number) -> Expected< di::Synchronized< IrqController > & > |
|
void | hard_shutdown (ShutdownStatus status) |
|
auto | detect_processor_info () -> ProcessorInfo |
|
void | log_output_byte (di::Byte byte) |
|
void | iris_main () |
|
auto | global_state_in_boot () -> GlobalState & |
|
void | log_prologue (detail::DebugFormatContext &context, di::SourceLocation location) |
|
void | schedule_task (Task &) |
| Schedule a task on any scheduler.
|
|
auto | create_kernel_task (TaskNamespace &task_namespace, void(*entry)()) -> Expected< di::Arc< Task > > |
|
auto | create_user_task (TaskNamespace &task_namespace, di::Arc< TNode > root_tnode, di::Arc< TNode > cwd_tnode, FileTable file_table, di::Arc< mm::AddressSpace > address_space) -> Expected< di::Arc< Task > > |
|
auto | load_executable (Task &task, di::PathView path) -> Expected< void > |
|
auto | tag_invoke (di::Tag< read_file >, DebugFile &, UserspaceBuffer< byte > buffer) -> di::AnySenderOf< usize > |
|
auto | tag_invoke (di::Tag< write_file >, DebugFile &self, UserspaceBuffer< byte const > data) -> di::AnySenderOf< usize > |
|
auto | init_initrd () -> Expected< void > |
|
auto | tag_invoke (di::Tag< inode_read >, Inode &self, mm::BackingObject &backing_object, u64 page_number) -> di::AnySenderOf< mm::PhysicalAddress > |
|
auto | tag_invoke (di::Tag< inode_read_directory >, Inode &self, mm::BackingObject &backing_object, u64 &offset, UserspaceBuffer< byte > buffer) -> di::AnySenderOf< usize > |
|
auto | tag_invoke (di::Tag< inode_lookup >, Inode &self, di::Arc< TNode > parent, di::TransparentStringView name) -> di::AnySenderOf< di::Arc< TNode > > |
|
auto | tag_invoke (di::Tag< inode_metadata >, Inode &self) -> di::AnySenderOf< Metadata > |
|
auto | tag_invoke (di::Tag< inode_create_node >, Inode &self, di::Arc< TNode > parent, di::TransparentStringView name, MetadataType type) -> di::AnySenderOf< di::Arc< TNode > > |
|
auto | tag_invoke (di::Tag< inode_truncate >, Inode &self, u64 size) -> di::AnySenderOf<> |
|
auto | tag_invoke (di::Tag< inode_hack_raw_data >, Inode &self) -> di::AnySenderOf< di::Span< byte const > > |
|
auto | tag_invoke (di::Tag< read_file >, InodeFile &self, UserspaceBuffer< byte > buffer) -> di::AnySenderOf< usize > |
|
auto | tag_invoke (di::Tag< read_directory >, InodeFile &self, UserspaceBuffer< byte > buffer) -> di::AnySenderOf< usize > |
|
auto | tag_invoke (di::Tag< write_file >, InodeFile &self, UserspaceBuffer< byte const > buffer) -> di::AnySenderOf< usize > |
|
auto | tag_invoke (di::Tag< file_metadata >, InodeFile &self) -> di::AnySenderOf< Metadata > |
|
auto | tag_invoke (di::Tag< seek_file >, InodeFile &self, i64 offset, int whence) -> di::AnySenderOf< u64 > |
|
auto | tag_invoke (di::Tag< file_truncate >, InodeFile &self, u64 size) -> di::AnySenderOf< void > |
|
auto | tag_invoke (di::Tag< file_hack_raw_data >, InodeFile &self) -> di::AnySenderOf< di::Span< byte const > > |
|
auto | lookup_path (di::Arc< TNode > root, di::Arc< TNode > relative_to, di::PathView path, PathLookupFlags flags) -> di::AnySenderOf< di::Arc< TNode > > |
|
auto | create_node (di::Arc< TNode > root, di::Arc< TNode > relative_to, di::PathView path, MetadataType type) -> di::AnySenderOf< void > |
|
auto | open_path (di::Arc< TNode > root, di::Arc< TNode > relative_to, di::PathView path, OpenMode mode) -> di::AnySenderOf< File > |
|
auto | init_tmpfs () -> Expected< void > |
|
auto | register_external_irq_handler (IrqLine line, IrqHandler handler) -> Expected< usize > |
|
auto | register_exception_handler (GlobalIrqNumber irq, IrqHandler handler) -> Expected< void > |
|
void | unregister_external_irq_handler (IrqLine line, usize handler_id) |
|
void | generic_irq_handler (GlobalIrqNumber irq, iris::arch::TaskState &task_state, int error_code) |
| Generic entry point called by assembly when an interrupt occurs.
|
|
void | init_timer_assignments () |
|
auto | scheduler_timer () -> di::Synchronized< Timer > & |
|
auto | calibration_timer () -> di::Synchronized< Timer > & |
|
auto | current_processor_unsafe () -> Processor & |
| Get the current processor.
|
|
auto | global_state () -> GlobalState const & |
|
template<di::concepts::Invocable F> |
auto | with_interrupts_disabled (F &&function) -> decltype(auto) |
|
template<di::concepts::Invocable F> |
auto | with_preemption_disabled (F &&function) -> decltype(auto) |
|
template<typename... Args> |
void | print (di::format::FormatStringWithLocationImpl< Encoding, Args... > format, Args &&... args) |
|
template<typename... Args> |
void | println (di::format::FormatStringWithLocationImpl< Encoding, Args... > format, Args &&... args) |
|
auto | current_processor () |
|
auto | current_scheduler () |
|
auto | do_syscall (Task ¤t_task, arch::TaskState &task_state) -> Expected< u64 > |
|
template<di::concepts::Invocable F> |
auto | with_userspace_access (F &&function) -> decltype(auto) |
|
template<typename T> |
auto | tag_invoke (di::Tag< di::util::deduce_create >, di::InPlaceTemplate< UserspaceBuffer >, T *, usize) -> UserspaceBuffer< T > |
|
template<typename T> |
auto | tag_invoke (di::Tag< di::util::deduce_create >, di::InPlaceTemplate< UserspacePtr >, T *) -> UserspacePtr< T > |
|