wav支持(没有测试)

This commit is contained in:
2026-04-16 20:04:22 +08:00
parent 643b26cfb2
commit 4eae6c34c4
15 changed files with 714 additions and 3 deletions

View File

@@ -1,4 +1,5 @@
#include <clks/driver.h>
#include <clks/audio.h>
#include <clks/elf64.h>
#include <clks/framebuffer.h>
#include <clks/fs.h>
@@ -115,6 +116,12 @@ static void clks_driver_register_builtins(void) {
clks_driver_push("framebuffer", CLKS_DRIVER_KIND_BUILTIN_VIDEO, CLKS_DRIVER_STATE_FAILED, CLKS_FALSE, 0ULL, 0ULL);
clks_driver_push("tty", CLKS_DRIVER_KIND_BUILTIN_TTY, CLKS_DRIVER_STATE_FAILED, CLKS_FALSE, 0ULL, 0ULL);
}
if (clks_audio_available() == CLKS_TRUE) {
clks_driver_push("pcspeaker", CLKS_DRIVER_KIND_BUILTIN_AUDIO, CLKS_DRIVER_STATE_READY, CLKS_FALSE, 0ULL, 0ULL);
} else {
clks_driver_push("pcspeaker", CLKS_DRIVER_KIND_BUILTIN_AUDIO, CLKS_DRIVER_STATE_FAILED, CLKS_FALSE, 0ULL, 0ULL);
}
}
static void clks_driver_probe_driver_dir(void) {

View File

@@ -1,6 +1,7 @@
// Kernel main function
#include <clks/boot.h>
#include <clks/audio.h>
#include <clks/cpu.h>
#include <clks/desktop.h>
#include <clks/driver.h>
@@ -175,6 +176,7 @@ void clks_kernel_main(void) {
}
clks_exec_init();
clks_audio_init();
clks_keyboard_init();
clks_mouse_init();
clks_desktop_init();

View File

@@ -1,4 +1,5 @@
#include <clks/cpu.h>
#include <clks/audio.h>
#include <clks/exec.h>
#include <clks/fs.h>
#include <clks/heap.h>
@@ -280,6 +281,22 @@ static u64 clks_syscall_restart(void) {
}
static u64 clks_syscall_audio_available(void) {
return (clks_audio_available() == CLKS_TRUE) ? 1ULL : 0ULL;
}
static u64 clks_syscall_audio_play_tone(u64 arg0, u64 arg1) {
if (clks_audio_play_tone(arg0, arg1) == CLKS_FALSE) {
return 0ULL;
}
return 1ULL;
}
static u64 clks_syscall_audio_stop(void) {
clks_audio_stop();
return 1ULL;
}
static u64 clks_syscall_fs_stat_type(u64 arg0) {
char path[CLKS_SYSCALL_PATH_MAX];
struct clks_fs_node_info info;
@@ -582,6 +599,12 @@ u64 clks_syscall_dispatch(void *frame_ptr) {
return clks_syscall_shutdown();
case CLKS_SYSCALL_RESTART:
return clks_syscall_restart();
case CLKS_SYSCALL_AUDIO_AVAILABLE:
return clks_syscall_audio_available();
case CLKS_SYSCALL_AUDIO_PLAY_TONE:
return clks_syscall_audio_play_tone(frame->rbx, frame->rcx);
case CLKS_SYSCALL_AUDIO_STOP:
return clks_syscall_audio_stop();
default:
return (u64)-1;
}