redo boot around an explicit system volume and fixed kernel/HAL images, redo volumes and filesystem paths around capabilities instead of drive numbers and kernel CWD state, add a capability/security model with derived and revocable handles and security contexts, add port IPC and rssrv to manage the userspace resource namespace and publish the system volume, move process, dll and path loading to userspace and add process builder syscalls, init now supervises rssrv and the session process, redo the syscall ABI around request structs and four arguments, add a volume manager and proper partition arrival/removal handling so FAT and NTFS mount dynamically, clean up the HAL/DDK boundary so drivers don't depend on HAL internals, save fpu state properly now, the serial driver doesn't hang on a missing port, fix AHCI startup races, fix timeout accounting, fix shared mmap writeback, more smoke tests
This commit is contained in:
1 parent
4add6789ba
commit
f882d339fb
232 files changed
+20934
-8898
No files matched your search
+16
-15
@@ -4,8 +4,9 @@
|
||||
|
||||
#include <stdint.h>
|
||||
#include <ntlite/status.h>
|
||||
#include <ntlite/handle.h>
|
||||
|
||||
#define SYS_AUDIO_ABI_VERSION 3u
|
||||
#define SYS_AUDIO_ABI_VERSION 4u
|
||||
#define SYS_AUDIO_MAX_ENDPOINTS 32u
|
||||
#define SYS_AUDIO_STREAM_CAPACITY_FRAMES 4096u
|
||||
|
||||
@@ -54,7 +55,7 @@ typedef enum SYS_AUDIO_ENDPOINT_STATE {
|
||||
typedef struct SYS_AUDIO_ENDPOINT_INFO {
|
||||
uint32_t Size;
|
||||
uint32_t Version;
|
||||
uint64_t EndpointId;
|
||||
uint32_t EndpointId;
|
||||
uint32_t Kind;
|
||||
uint32_t Flags;
|
||||
uint32_t Capabilities;
|
||||
@@ -82,17 +83,17 @@ typedef struct SYS_AUDIO_ENUMERATE_ENDPOINTS_REQUEST {
|
||||
typedef struct SYS_AUDIO_OPEN_STREAM_REQUEST {
|
||||
uint32_t Size;
|
||||
uint32_t Flags;
|
||||
uint64_t EndpointId;
|
||||
uint32_t EndpointId;
|
||||
SYS_AUDIO_FORMAT Format;
|
||||
uint32_t Reserved;
|
||||
uint32_t* StreamHandleOut;
|
||||
SYS_HANDLE* StreamHandleOut;
|
||||
} SYS_AUDIO_OPEN_STREAM_REQUEST;
|
||||
|
||||
// Describes one bounded nonblocking stream write.
|
||||
typedef struct SYS_AUDIO_WRITE_REQUEST {
|
||||
uint32_t Size;
|
||||
uint32_t Flags;
|
||||
uint32_t StreamHandle;
|
||||
SYS_HANDLE StreamHandle;
|
||||
uint32_t FrameCount;
|
||||
const void* Frames;
|
||||
uint32_t* WrittenFramesOut;
|
||||
@@ -111,7 +112,7 @@ typedef struct SYS_AUDIO_WRITE_REQUEST {
|
||||
typedef struct SYS_AUDIO_ARM_WAIT_REQUEST {
|
||||
uint32_t Size;
|
||||
uint32_t Flags;
|
||||
uint32_t StreamHandle;
|
||||
SYS_HANDLE StreamHandle;
|
||||
uint32_t Mask;
|
||||
// Frame counters are inclusive absolute targets and generations are change baselines.
|
||||
uint32_t WritableFrames;
|
||||
@@ -165,7 +166,7 @@ typedef struct SYS_AUDIO_STREAM_INFO {
|
||||
typedef struct SYS_AUDIO_SET_VOLUME_REQUEST {
|
||||
uint32_t Size;
|
||||
uint32_t Flags;
|
||||
uint32_t StreamHandle;
|
||||
SYS_HANDLE StreamHandle;
|
||||
uint32_t Muted;
|
||||
uint32_t VolumeQ16;
|
||||
int32_t PanQ16;
|
||||
@@ -175,7 +176,7 @@ typedef struct SYS_AUDIO_SET_VOLUME_REQUEST {
|
||||
typedef struct SYS_AUDIO_SET_MASTER_VOLUME_REQUEST {
|
||||
uint32_t Size;
|
||||
uint32_t Flags;
|
||||
uint64_t EndpointId;
|
||||
uint32_t EndpointId;
|
||||
uint32_t Muted;
|
||||
uint32_t VolumeQ16;
|
||||
} SYS_AUDIO_SET_MASTER_VOLUME_REQUEST;
|
||||
@@ -193,25 +194,25 @@ KSTATUS SysAudioWrite(const SYS_AUDIO_WRITE_REQUEST* request);
|
||||
KSTATUS SysAudioArmWait(const SYS_AUDIO_ARM_WAIT_REQUEST* request);
|
||||
|
||||
// Copies one coherent stream snapshot after the caller initializes infoOut->Size.
|
||||
KSTATUS SysAudioQueryStream(uint32_t streamHandle, SYS_AUDIO_STREAM_INFO* infoOut);
|
||||
KSTATUS SysAudioQueryStream(SYS_HANDLE streamHandle, SYS_AUDIO_STREAM_INFO* infoOut);
|
||||
|
||||
// Starts one created or stopped stream.
|
||||
KSTATUS SysAudioStart(uint32_t streamHandle);
|
||||
KSTATUS SysAudioStart(SYS_HANDLE streamHandle);
|
||||
|
||||
// Pauses future mixing while preserving unconsumed source frames.
|
||||
KSTATUS SysAudioPause(uint32_t streamHandle);
|
||||
KSTATUS SysAudioPause(SYS_HANDLE streamHandle);
|
||||
|
||||
// Resumes one paused stream.
|
||||
KSTATUS SysAudioResume(uint32_t streamHandle);
|
||||
KSTATUS SysAudioResume(SYS_HANDLE streamHandle);
|
||||
|
||||
// Rejects new writes and stops after all submitted frames reach a terminal disposition.
|
||||
KSTATUS SysAudioDrain(uint32_t streamHandle);
|
||||
KSTATUS SysAudioDrain(SYS_HANDLE streamHandle);
|
||||
|
||||
// Stops future mixing and discards source frames not yet committed to hardware periods.
|
||||
KSTATUS SysAudioStop(uint32_t streamHandle);
|
||||
KSTATUS SysAudioStop(SYS_HANDLE streamHandle);
|
||||
|
||||
// Returns one stopped stream to an empty position-zero state.
|
||||
KSTATUS SysAudioReset(uint32_t streamHandle);
|
||||
KSTATUS SysAudioReset(SYS_HANDLE streamHandle);
|
||||
|
||||
// Updates one stream's software volume, pan, and mute state.
|
||||
KSTATUS SysAudioSetVolume(const SYS_AUDIO_SET_VOLUME_REQUEST* request);
|
||||
|
||||
Reference in new issue
Block a user