MCPcopy Create free account

hub / github.com/H-ing-1/rCore-OS / functions

Functions173 in github.com/H-ing-1/rCore-OS

↓ 21 callersFunctionmake_stream
构造一条处于 SetParameters 状态的测试流
src/lib.rs:1413
↓ 20 callersFunctionmake_handler
构造控制队列 + ControlHandler
src/lib.rs:1427
↓ 20 callersMethodregister_stream
注册一条新的 PCM 流 检查 stream_id 合法性与重复注册,通过后加入流列表。
src/lib.rs:1085
↓ 16 callersMethodsend_set_params
发送 PCM 参数设置命令 (VIRTIO_SND_R_PCM_SET_PARAMS) 验证参数合法性后,构造请求描述符链并加入控制队列。
src/lib.rs:670
↓ 15 callersMethodadd_chain
将一条描述符链写入描述符表,并加入可用环 # 参数 - `chain`:描述符列表(按顺序排列,首个为链头) # 返回 链头描述符索引(可用于后续追踪) # 内存屏障说明 写入描述符后、更新可用环 `idx` 前,必须插入写屏障(`wmb`/`sfence`), 确保设备看到的描述符数据是完整
src/lib.rs:421
↓ 14 callersMethodsend_prepare
发送 PREPARE 命令,使数据流从 SetParameters → Prepare
src/lib.rs:735
↓ 13 callersFunctionmake_driver
构造一个拥有 4 条流的测试用驱动实例
src/lib.rs:1402
↓ 11 callersMethodsend_start
发送 START 命令,使数据流从 Prepare/Stop → Start
src/lib.rs:745
↓ 11 callersMethodsetup_and_start
配置并启动指定的 PCM 数据流(SET_PARAMS → PREPARE → START 一键完成) 若中间步骤失败,尝试回滚到 SetParameters 状态并返回错误。
src/lib.rs:1216
↓ 8 callersMethodnotify_device
提交所有已加入可用环的描述符,通知设备处理 在真实硬件中,需要向设备的 Queue Notify 寄存器写入队列编号。 此处仅打印日志(no_std 环境下可替换为 MMIO 写入)。
src/lib.rs:473
↓ 6 callersMethodsend_release
发送 RELEASE 命令,使数据流从 Prepare/Stop → Release 释放后的流可以重新调用 SET_PARAMS 重新配置。
src/lib.rs:768
↓ 6 callersMethodsend_stop
发送 STOP 命令,使数据流从 Start → Stop
src/lib.rs:756
↓ 6 callersMethodwrite_audio_frames
向 TX 队列发送音频 PCM 帧数据 # 描述符链结构 每次 `write_audio_frames` 调用向 TX 队列提交一个双描述符链: - [0]:PCM 帧头(流 ID + 序列号,只读) - [1]:实际 PCM 数据缓冲区(只读) - [2]:状态响应缓冲区(设备可写,设备填充完成
src/lib.rs:1253
↓ 5 callersFunctioncompute_rms
(samples: &[i16])
src/signal_analysis.rs:38
↓ 5 callersMethodparse_response
解析设备响应码,将非成功状态转换为 `SndError` | 响应码 | 含义 | 映射错误 | |-------------------------|--------------------|---
src/lib.rs:956
↓ 4 callersMethodprocess_used
处理已用环中所有新完成的描述符链(由中断处理函数或轮询调用) 对每个已完成的条目,回收其占用的全部描述符,并返回 `(head_idx, written_len)` 的列表。 # 中断响应说明 VirtIO 设备通过 MSI-X 或 Legacy IRQ 通知驱动"已用环有新数据"。 驱动在中断
src/lib.rs:492
↓ 4 callersMethodsend_mute
设置指定流的静音状态 (VIRTIO_SND_R_PCM_MUTE) 静音操作可以在 Start 或 Stop 状态下执行。 # 错误恢复 若设备返回 `NOT_SUPP`,驱动回滚 `stream.muted` 字段并返回 `UnsupportedFeature`,避免驱动侧状态与设备侧不一致
src/lib.rs:789
↓ 4 callersMethodsend_stream_cmd
发送通用 PCM 流操作命令(Prepare / Start / Stop / Release)
src/lib.rs:967
↓ 3 callersMethodget_stream
获取指定流的只读引用
src/lib.rs:1359
↓ 3 callersFunctionnormalize_i16_to_f32
(sample: i16)
src/signal_analysis.rs:27
↓ 3 callersMethodsend_volume
设置指定流的音量 (VIRTIO_SND_R_PCM_VOLUME) # 参数 - `volume`:目标音量值,必须在 [0, 255] 范围内 # 错误恢复 若命令失败(设备错误或超时),保持原音量值不变。
src/lib.rs:851
↓ 3 callersMethodstop_and_release
停止并释放指定 PCM 流
src/lib.rs:1224
↓ 3 callersMethodtoggle_mute
对指定流执行静音切换(toggle)
src/lib.rs:1334
↓ 2 callersMethodalloc_desc
从空闲链表分配一个描述符,返回其索引 若队列已满,返回 `Err(SndError::QueueFull)`。
src/lib.rs:389
↓ 2 callersFunctionanalyze_window
(samples: &[i16])
src/signal_analysis.rs:89
↓ 2 callersFunctionbuild_buffer_plan
( profile: &AudioWorkloadProfile, hint: SchedulingHint, pressure: QueuePressure, )
src/audio_planner.rs:218
↓ 2 callersFunctionbuild_queue_budget
( profile: &AudioWorkloadProfile, buffer: BufferPlan, pressure: QueuePressure, )
src/audio_planner.rs:254
↓ 2 callersFunctionbuild_stream_plan
(profile: &AudioWorkloadProfile, snapshot: PlannerSnapshot)
src/audio_planner.rs:290
↓ 2 callersFunctioncandidate_plans
(profile: &AudioWorkloadProfile)
src/audio_planner.rs:305
↓ 2 callersFunctioncompute_peak
(samples: &[i16])
src/signal_analysis.rs:31
↓ 2 callersMethodconfigure_stream_defaults
对指定流写入默认参数配置。 当前原型统一使用 `buffer_bytes=4096` 与 `period_bytes=512` 作为默认参数,便于测试和评审复现。
src/lib.rs:1119
↓ 2 callersFunctionfind_entry
(id: u16)
src/workload_catalog.rs:15393
↓ 2 callersMethodhas_free_descs
判断队列是否有足够的空闲描述符 # 参数 - `count`:需要的描述符数量
src/lib.rs:380
↓ 2 callersMethodprepare_stream
对指定流发送 PREPARE 命令。
src/lib.rs:1146
↓ 2 callersMethodquery_chmap
查询通道映射信息 (VIRTIO_SND_R_CHMAP_INFO) 返回指定流的通道位置数组,长度等于 `stream.channels`。
src/lib.rs:904
↓ 2 callersFunctionscore_plan
(profile: &AudioWorkloadProfile, buffer: BufferPlan, queue: QueueBudget)
src/audio_planner.rs:278
↓ 2 callersMethodset_global_mute
设置全局静音(影响所有流)
src/lib.rs:1374
↓ 2 callersMethodset_volume
设置指定流的音量
src/lib.rs:1347
↓ 2 callersMethodsimulate_device_complete
(&mut self, head_idx: u16, written_len: u32)
src/lib.rs:525
↓ 2 callersFunctionsplit_transfer_schedule
(total_frames: usize, period_frames: usize)
src/audio_planner.rs:347
↓ 2 callersMethodstop_stream
对指定流发送 STOP 命令。
src/lib.rs:1180
↓ 1 callersFunctionalign_up
(value: usize, align: usize)
src/audio_planner.rs:157
↓ 1 callersFunctionapply_gain
(samples: &[i16], gain: f32)
src/signal_analysis.rs:129
↓ 1 callersFunctionbuild_reference_plan
(id: u16)
src/workload_catalog.rs:15423
↓ 1 callersFunctionbytes_to_frames
(bytes: usize, frame_bytes: usize)
src/audio_planner.rs:145
↓ 1 callersFunctionchoose_period_count
(profile: &AudioWorkloadProfile, hint: SchedulingHint)
src/audio_planner.rs:170
↓ 1 callersFunctionchoose_prefetched_periods
(periods: u16, pressure: QueuePressure)
src/audio_planner.rs:184
↓ 1 callersFunctionchoose_scheduling_hint
(profile: &AudioWorkloadProfile)
src/audio_planner.rs:207
↓ 1 callersFunctioncompute_mean
(samples: &[i16])
src/signal_analysis.rs:63
↓ 1 callersFunctioncompute_zero_crossing_rate
(samples: &[i16])
src/signal_analysis.rs:74
↓ 1 callersMethodconfigure_stream
对指定流发送 SET_PARAMS 命令。
src/lib.rs:1124
↓ 1 callersFunctionderive_queue_pressure
(snapshot: PlannerSnapshot)
src/audio_planner.rs:193
↓ 1 callersFunctiondetect_transients
(samples: &[i16], threshold: f32)
src/signal_analysis.rs:154
↓ 1 callersMethoddisable_irq
禁用中断(设置可用环 flags bit0)
src/lib.rs:541
↓ 1 callersMethodenable_irq
启用中断(清除可用环 flags bit0)
src/lib.rs:547
↓ 1 callersFunctionentries_for_class
(class: WorkloadClass)
src/workload_catalog.rs:15401
↓ 1 callersFunctionentries_for_rate
(sample_rate: u32)
src/workload_catalog.rs:15408
↓ 1 callersFunctionframes_to_bytes
(frames: usize, frame_bytes: usize)
src/audio_planner.rs:141
↓ 1 callersMethodfree_desc
将一个描述符归还到空闲链表
src/lib.rs:400
↓ 1 callersFunctionlatency_ms_for_frames
(frames: usize, sample_rate: u32)
src/audio_planner.rs:149
↓ 1 callersMethodquery_pcm_info
发送设备 PCM 信息查询命令
src/lib.rs:1313
↓ 1 callersMethodreclaim_chain
递归回收以 `head` 为起点的描述符链
src/lib.rs:510
↓ 1 callersFunctionredistribute_schedule
(schedule: &[usize], target_chunk: usize)
src/audio_planner.rs:370
↓ 1 callersMethodrelease_stream
对指定流发送 RELEASE 命令。
src/lib.rs:1197
↓ 1 callersFunctionsplit_interleaved_stereo
(samples: &[i16])
src/signal_analysis.rs:175
↓ 1 callersFunctionsqrt_newton
(value: f32)
src/signal_analysis.rs:52
↓ 1 callersMethodstart_stream
对指定流发送 START 命令。
src/lib.rs:1163
↓ 1 callersFunctionsuggest_gain
(metrics: SampleWindowMetrics, target_peak: f32, max_gain: f32)
src/signal_analysis.rs:110
↓ 1 callersMethodwith_next
追加链表下一节点
src/lib.rs:255
Functionaggregate_latency_for_class
(class: WorkloadClass)
src/workload_catalog.rs:15443
Functioncatalog
()
src/workload_catalog.rs:15389
Functioncatalog_len
()
src/workload_catalog.rs:15385
Functionclassify_latency_bucket
(latency_ms: u32)
src/audio_planner.rs:378
Functionclassify_silence
(metrics: SampleWindowMetrics, threshold: f32)
src/signal_analysis.rs:100
Methodcompetitive_game
(sample_rate: u32)
src/audio_planner.rs:107
Functioncompute_channel_balance
(left: &[i16], right: &[i16])
src/signal_analysis.rs:165
Functioncompute_jitter_score
(schedule: &[usize])
src/audio_planner.rs:359
Methoddecode_rate
将采样率枚举值解码回 Hz
src/lib.rs:1018
Methoddefault
()
src/lib.rs:277
Functionduplex_entry_count
()
src/workload_catalog.rs:15456
Methodencode_rate
将人类可读的采样率(Hz)编码为 VirtIO 规范中的枚举值 VirtIO Sound 规范 5.14.6.8.1 定义了采样率枚举,常见对应关系: 5512 → 0, 8000 → 1, 11025 → 2, 16000 → 3, 22050 → 4, 32000 → 5, 44100 → 6
src/lib.rs:997
Functionestimate_frame_bytes
(channels: u8, bits_per_sample: u8)
src/audio_planner.rs:136
Functionfind_by_name
(name: &str)
src/workload_catalog.rs:15397
Methodfmt
(&self, f: &mut fmt::Formatter)
src/lib.rs:199
Methodfree_desc_count
获取当前空闲描述符数量(估算)
src/lib.rs:535
Methodget_stream_mut
获取指定流的可变引用
src/lib.rs:1364
Methodinteractive_voice
(sample_rate: u32)
src/audio_planner.rs:93
Functionmain
()
examples/basic_lifecycle.rs:3
Functionmain
()
examples/control_and_queue.rs:5
Methodnew
创建并初始化一个 VirtQueue
src/lib.rs:349
Methodprocess_rx_completions
处理 RX 队列(录音),收集设备填充的 PCM 数据 真实驱动中,需要预先向 RX 队列投递足够的空白描述符(可写), 设备将采集到的音频数据填入后通知驱动。
src/lib.rs:1308
Methodprocess_tx_completions
处理 TX 队列已完成的帧,回收描述符 应由中断处理函数或事件轮询定期调用。 返回已完成的 `(head_idx, written_len)` 列表。
src/lib.rs:1300
Methodreadable
创建一个只读(Driver-Readable)描述符
src/lib.rs:235
Functionreference_entry
(class: WorkloadClass, channels: u8)
src/workload_catalog.rs:15415
Functionrolling_rms
(samples: &[i16], window: usize)
src/signal_analysis.rs:139
Functionselect_best_plan
(profile: &AudioWorkloadProfile)
src/audio_planner.rs:336
Methodstereo_music
(sample_rate: u32)
src/audio_planner.rs:79
Methodstream_count
返回当前已注册的流数量
src/lib.rs:1369
Methodstudio_render
(sample_rate: u32, channels: u8)
src/audio_planner.rs:121
Functiontest_align_up
()
src/audio_planner.rs:399
next →1–100 of 173, ranked by callers