小编mhl*_*mhl的帖子

来自task_struct的完整进程名称

我想从中获取完整的进程名称struct task_struct.该comm字段仅存储16个字符,而进程名称可以更长.有没有办法获得完整的进程名称?
这可以通过struct vm_area_struct从中task_struct获取并进一步获取vm_area映射到的文件来完成,但这是不可靠的.

linux kernel process

10
推荐指数
1
解决办法
7284
查看次数

指向ROM中的功能

我有微控制器,我正在与他合作.在调试时,必须调用一个在ROM中硬编码的函数.技术参考显示了如何执行此操作:

# define Device_cal (void(*)(void))0x3D7C80
Run Code Online (Sandbox Code Playgroud)

和调用过程看起来像这样:

(*Device_cal)()
Run Code Online (Sandbox Code Playgroud)

我无法理解这里究竟发生了什么,所以我的问题是:它是如何工作的?

c embedded

5
推荐指数
2
解决办法
772
查看次数

如何从Linux中的ftrace中的特定函数开始获取完整的调用图?

我想用ftrace跟踪特定的函数,但是需要来自该函数的所有进一步调用.

我已经设法在我想要的功能上使用过滤器启动ftrace,但现在它只显示了这个特定的函数.

所以我的问题是:如何打印从特定函数调用的所有函数,这些函数调用的函数,等等?

linux ftrace linux-kernel

3
推荐指数
2
解决办法
2830
查看次数

从矢量匹配模式

假设我有这个功能:

match symbol {
      letter @ 'a'..'z' => Token { ... },
      digit @ '0'..'9' => Token { ... },
      whitespace @ ['\r', '\t', '\n'] => Token {...}
}
Run Code Online (Sandbox Code Playgroud)

这显然不起作用.有没有办法whitespace使用类似的构造,而不是像这样写:

match symbol {
  letter @ 'a'..'z' => Token { ... },
  digit @ '0'..'9' => Token { ... },
  '\r' => Token {...},
  '\n' => Token {...},
  '\r' => Token {...},
}
Run Code Online (Sandbox Code Playgroud)

match rust

3
推荐指数
1
解决办法
449
查看次数

Haskell char引用

我最近开始学习haskell,我正在做一些来自wikibooks的练习.我正在使用RLE编码进行练习,我得到了这样的解决方案:

import Data.List
rle :: String -> [(Int,Char)]
rle [] = []
rle xs = zip lengths chars
        where
        groups = group xs
        lengths = map length groups
        chars = map head groups

rle_toString :: [(Int, Char)] -> String
rle_toString [] = []
rle_toString (x:xs) = show (fst x ) ++ show (snd x) ++ rle_toString xs`
Run Code Online (Sandbox Code Playgroud)

不是一个非常优雅的解决方案,但它几乎可行.问题是,我得到这样的输出:"7'a'8'b'7'j'6'q'3'i'7'q'1'p'1'a'16'z'2'n'".带有字符的单引号并不优雅.如何能够做到像输出:"7a8b7j6q3i7q1p1a16z2n"

quotes haskell char

0
推荐指数
1
解决办法
380
查看次数

标签 统计

linux ×2

c ×1

char ×1

embedded ×1

ftrace ×1

haskell ×1

kernel ×1

linux-kernel ×1

match ×1

process ×1

quotes ×1

rust ×1