INNER CODE UNIT · Rust
next
KernelSU-Next/KernelSU-Next · userspace/ksuinit/src/lib.rs:37
fn next(&mut self) -> Option<Self::Item> {
self.iter.next()
}
}
pub fn kernel_symbols_iter() -> Result<impl Iterator<Item = (String, u64)>> {
let kptr = Kptr::new()?;
let iter = BufReader::new(File::open("/proc/kallsyms")?)
.lines()
// https://github.com/torvalds/linux/blob/7f87a5ea75f011d2c9bc8ac0167e5e2d1adb1594/kernel/kallsyms.c#L727
// We can stop read as soon as we read all kernel symbols
.map_while(|line| {
line.ok().and_then(|line| {
let mut splits = line.split_whitespace();
splits
.next()
.and_then(|addr| u64::from_str_radix(addr, 16).ok())