source

printk와 pr_info의 차이

manycodes 2023. 11. 7. 20:59
반응형

printk와 pr_info의 차이

그 사이의 정확한 차이점은 무엇입니까?printk그리고.pr_info함수?그리고 어떤 조건에서 둘 중에 하나를 선택해야 합니까?

커널의 printk.h는 다음과 같습니다.

#define pr_info(fmt,arg...) \
    printk(KERN_INFO fmt,##arg)

이름 그대로.pr_info()printk()와 함께KERN_INFO우선 순위.

구체적으로 볼 때pr_info, 그 정의는 차례로 사용될 것입니다.printk(KERN_INFO ...(barcelona_delpy의 답변에서 언급된 바와 같이); 그러나 답변의 소스 스니펫은 형식 래퍼를 제외한 것으로 보입니다.pr_fmt(fmt)(LP 댓글에서 언급한 바와 같이).


사용할 수 있는 이유의 차이pr_info위에printk(KERN_INFO ...설정할 수 있는 사용자 지정 형식입니다.모듈의 메시지를 다음과 같이 접두사로 붙이려면printk, 방법은 각 행에 접두사를 명시적으로 추가하는 것입니다.

printk(KERN_INFO "mymodule: hello there\n");
// outputs "mymodule: hello there"

또는:

printk(KERN_INFO KBUILD_MODNAME " hello there\n");
// outputs "mymodule: hello there"

하지만 만약 당신이pr_info(기타)pr_*functions), 포맷을 다시 define하고 간단히 사용할 수 있습니다.pr_info추가 작업 없이:

... (includes)
#ifdef pr_fmt
#undef pr_fmt
#endif
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

...
{
    ...
    pr_err("hello there\n");
    // outputs "mymodule: hello there" (assuming module is named 'mymodule')
    ...
}
...

참고 항목:

언급URL : https://stackoverflow.com/questions/42243185/difference-between-printk-and-pr-info

반응형