0ec7bd46bb
ROLLUP of all Phase 1-3 work on branch 0.3.0, targeting a production-ready console + full graphical desktop under Intel and Virgl/VirtIO-GPU. === Phase 1 — Stability === - fbcond: Enter key handler (scancode 0x1C→\n), display map buffering, control-char filter in all 7 keymaps, write_event assert - build-redbear.sh: auto-rebuild-prefix when fork timestamps are newer than prefix/x86_64-unknown-redox/sysroot (was warning-only). Added configurable REDBEAR_SKIP_PREFIX_REBUILD guard. - build-redbear.sh: set explicit keymap '-K us' in console activation - config/redbear-device-services.toml: remove spurious init.d service files for redbear-acmd/ecmd/usbaudiod. These USB device daemons are spawned dynamically by pcid-spawner, not as boot-time init services. Starting them without args panicked the boot flow. - relibc: grantpt/unlockpt/ptsname (then deduplicated against stdlib) - userutils: cherry-pick upstream getty commit 2834434 (standard C ptsname/grantpt/unlockpt) - base fork: Russian (ЙЦУКЕН) keymap + inputd control-char filter (K_ESC/K_BKSP/K_ENTER → \0, commit73e44d81in submodule/base) === Phase 2 — Login & Console === - login.rs: restored to 0.2.5-known-good liner-based prompt - redbear-upower: removed tokio full/signal features → protection fault fix - redbear-power: excluded temporarily (being fixed in other session) - tlc version: updated to 0.3.0 === Phase 3 — GPU/3D Drivers (commit0898332f7a) === Intel i915: FULLY implemented — real ring buffer + MMIO command submission via GEM DMA → GGTT → i915 render ring, with hardware head-pointer polling (2M iterations, 50µs backoff). Zero stubs. VirtIO GPU/Virgl (VirtioTransport): 11 VIRTGPU ioctls (GETPARAM, GET_CAPS, RESOURCE_CREATE, RESOURCE_INFO, CONTEXT_INIT, EXECBUFFER, WAIT, TRANSFER_TO_HOST, TRANSFER_FROM_HOST, MAP, CREATE_BLOB) ported from Linux 7.1 virtgpu_ioctl.c and virtgpu_vq.c. - driver.rs: 8 virgl_* trait methods (default Unsupported) - scheme.rs: 11 ioctl constants + 8 wire structures + dispatch - virtio/transport.rs: PCI capability discovery, feature negotiation, control+cursor virtqueue setup, vring descriptor building - virtio/mod.rs: real implementations for all 8 virgl_* methods - intel/mod.rs: explicit virgl Unsupported stubs Other changes from active sessions: Cargo.toml version bumps, linux-kpi headers, libpciaccess recipe, mesa/recipe.toml, kf6 patches, expat, driver-manager, redbear-sessiond, redbear-compositor, cub, tlc, and many other local recipes.
74 lines
4.1 KiB
C
74 lines
4.1 KiB
C
#pragma once
|
|
|
|
#include <sys/types.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
struct udev;
|
|
struct udev_device;
|
|
struct udev_enumerate;
|
|
struct udev_list_entry;
|
|
struct udev_monitor;
|
|
|
|
#define udev_list_entry_foreach(list_entry, first_entry) \
|
|
for ((list_entry) = (first_entry); (list_entry) != NULL; (list_entry) = udev_list_entry_get_next(list_entry))
|
|
|
|
struct udev *udev_new(void);
|
|
struct udev *udev_ref(struct udev *udev);
|
|
struct udev *udev_unref(struct udev *udev);
|
|
|
|
struct udev_enumerate *udev_enumerate_new(struct udev *udev);
|
|
struct udev_enumerate *udev_enumerate_ref(struct udev_enumerate *udev_enumerate);
|
|
struct udev_enumerate *udev_enumerate_unref(struct udev_enumerate *udev_enumerate);
|
|
struct udev *udev_enumerate_get_udev(struct udev_enumerate *udev_enumerate);
|
|
int udev_enumerate_add_match_subsystem(struct udev_enumerate *udev_enumerate, const char *subsystem);
|
|
int udev_enumerate_add_match_sysname(struct udev_enumerate *udev_enumerate, const char *sysname);
|
|
int udev_enumerate_add_match_property(struct udev_enumerate *udev_enumerate, const char *property, const char *value);
|
|
int udev_enumerate_scan_devices(struct udev_enumerate *udev_enumerate);
|
|
int udev_enumerate_scan_subsystems(struct udev_enumerate *udev_enumerate);
|
|
struct udev_list_entry *udev_enumerate_get_list_entry(struct udev_enumerate *udev_enumerate);
|
|
|
|
struct udev_list_entry *udev_list_entry_get_next(struct udev_list_entry *list_entry);
|
|
const char *udev_list_entry_get_name(struct udev_list_entry *list_entry);
|
|
const char *udev_list_entry_get_value(struct udev_list_entry *list_entry);
|
|
|
|
struct udev_device *udev_device_ref(struct udev_device *udev_device);
|
|
struct udev_device *udev_device_unref(struct udev_device *udev_device);
|
|
struct udev_device *udev_device_new_from_syspath(struct udev *udev, const char *syspath);
|
|
struct udev_device *udev_device_new_from_devnum(struct udev *udev, char type, dev_t devnum);
|
|
struct udev_device *udev_device_new_from_subsystem_sysname(struct udev *udev, const char *subsystem, const char *sysname);
|
|
struct udev *udev_device_get_udev(struct udev_device *udev_device);
|
|
const char *udev_device_get_devnode(struct udev_device *udev_device);
|
|
dev_t udev_device_get_devnum(struct udev_device *udev_device);
|
|
const char *udev_device_get_action(struct udev_device *udev_device);
|
|
const char *udev_device_get_property_value(struct udev_device *udev_device, const char *key);
|
|
struct udev_list_entry *udev_device_get_properties_list_entry(struct udev_device *udev_device);
|
|
struct udev_list_entry *udev_device_get_devlinks_list_entry(struct udev_device *udev_device);
|
|
struct udev_list_entry *udev_device_get_sysattr_list_entry(struct udev_device *udev_device);
|
|
struct udev_device *udev_device_get_parent(struct udev_device *udev_device);
|
|
struct udev_device *udev_device_get_parent_with_subsystem_devtype(struct udev_device *udev_device, const char *subsystem, const char *devtype);
|
|
const char *udev_device_get_sysattr_value(struct udev_device *udev_device, const char *sysattr);
|
|
const char *udev_device_get_devpath(struct udev_device *udev_device);
|
|
const char *udev_device_get_syspath(struct udev_device *udev_device);
|
|
const char *udev_device_get_subsystem(struct udev_device *udev_device);
|
|
const char *udev_device_get_devtype(struct udev_device *udev_device);
|
|
const char *udev_device_get_sysname(struct udev_device *udev_device);
|
|
const char *udev_device_get_sysnum(struct udev_device *udev_device);
|
|
const char *udev_device_get_driver(struct udev_device *udev_device);
|
|
int udev_device_get_is_initialized(struct udev_device *udev_device);
|
|
int udev_device_has_tag(struct udev_device *udev_device, const char *tag);
|
|
|
|
struct udev_monitor *udev_monitor_new_from_netlink(struct udev *udev, const char *name);
|
|
struct udev_monitor *udev_monitor_ref(struct udev_monitor *udev_monitor);
|
|
struct udev_monitor *udev_monitor_unref(struct udev_monitor *udev_monitor);
|
|
int udev_monitor_filter_add_match_subsystem_devtype(struct udev_monitor *udev_monitor, const char *subsystem, const char *devtype);
|
|
int udev_monitor_enable_receiving(struct udev_monitor *udev_monitor);
|
|
int udev_monitor_get_fd(struct udev_monitor *udev_monitor);
|
|
struct udev_device *udev_monitor_receive_device(struct udev_monitor *udev_monitor);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|