"현재 메시지 수준 : 0x00000033 (51)"은 무엇을 의미합니까?


4

비슷한 질문이 여기에 있습니다. "현재 메시지 수준"이란 무엇입니까?

대답에 링크 된 참조 이것을 언급하지 않았다. 0x00000033 (51) 값.

다음은 ethtool의 전체 출력입니다.

Settings for enp5s0:
Supported ports: [ TP MII ]
Supported link modes:   10baseT/Half 10baseT/Full 
                        100baseT/Half 100baseT/Full 
                        1000baseT/Half 1000baseT/Full 
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes:  10baseT/Half 10baseT/Full 
                        100baseT/Half 100baseT/Full 
                        1000baseT/Half 1000baseT/Full 
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Link partner advertised link modes:  10baseT/Half 10baseT/Full 
                                     100baseT/Half 100baseT/Full 
Link partner advertised pause frame use: Symmetric Receive-only
Link partner advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: d
Current message level: 0x00000033 (51)
               drv probe ifdown ifup
Link detected: yes

답변:


1

핵심 구문 ~로부터 Documentation/networking/netif-msg.txt 의지 에 의해 참조 된 "현재 메시지 수준"이란 무엇입니까? 의문 (그리고 nelaaro의 대답 이 질문에) "변수가 비트 맵입니다 ..."입니다. 그것이 무엇을 의미하는지 모른다면 약간의 연구를하십시오.

메시지 수준 0x00000033에 대해 묻습니다. 0x33 = 0x1 | 0x2 | 0x10 | 0x20, 메시지 레벨은 다음과 같습니다. NETIF_MSG_DRV + NETIF_MSG_PROBE + NETIF_MSG_RX_ERR + NETIF_MSG_TX_ERR + NETIF_MSG_TX_QUEUED. 그리고 만약 당신이 무엇을 알지 못한다면 방법, 당신은 더 많은 연구를 할 필요가 있습니다. 새로운 질문을하는 것을 포함하여 가능하다. 귀하의 지식 수준을 명확하게 나타내는 그리고 당신이하는 일과 이해하지 않는 일.


대답 주셔서 감사합니다, 나는 그것을 지금 이해합니다. 나는 C / C ++ (중급 수준의 것들)로 일했습니다. 나는 그것이 조금 가면임을 깨닫지 못했다.
Peter Sandor

-1

다음 링크에서 가져온 것 http://pastebin.com/raw/WKyEQAUp


NETIF Msg 수준

네트워크 인터페이스 메시지 수준 설정의 디자인.

역사

디버깅 메시지 인터페이스의 설계는  역 호환성 이전 연습에 의해 제약을받습니다. 그것은 쓸모있다  현재를 이해하기 위해 역사와 진화를 이해한다.  연습을하고 구형 드라이버 소스 코드와 연결하십시오.

리눅스의 시작부터 각 네트워크 장치 드라이버에는 로컬  디버그 메시지 수준을 제어하는 ​​정수 변수입니다. 메시지  수준은 0에서 7까지의 범위를 가지며 자세하게 단조롭게 증가합니다.

메시지 레벨은 레벨 3을 지나서 정확하게 정의되지 않았지만  지정된 레벨의 + -1 내에서 항상 구현됩니다. 운전자 경향
보다 성숙한 수준의 메시지를 성숙시키는 데 도움이됩니다.
0 최소 메시지, 치명적인 오류에 대한 필수 정보.
1 표준 메시지, 초기화 상태. 런타임 메시지 없음
2 특수 미디어 선택 메시지, 일반적으로 타이머 드라이버.
3 정상 상태 메시지를 포함하여 인터페이스가 시작 및 중지됩니다.
4 Tx 및 Rx 프레임 오류 메시지 및 비정상적인 드라이버 작동
5 Tx 패킷 대기열 정보, 인터럽트 이벤트.
6 완료된 각 송신 패킷 및 수신 된 수신 패킷의 상태
7 Tx 및 Rx 패킷의 초기 내용

초기에이 메시지 레벨 변수는 각 드라이버에서 고유하게 명명되었습니다  예 : "lance_debug", 그래서 커널 심볼릭 디버거가  설정을 수정하십시오. 커널 모듈이 공통화되면 변수  일관되게 "디버그"로 이름이 변경되어 모듈로 설정되도록 허용되었습니다.  매개 변수.

이 접근법은 효과가있었습니다. 그러나 언제나  추가 기능. 수년에 걸쳐 다음과 같이 나타났습니다.  합리적이고 쉽게 구현 된 개선    ioctl () 호출을 사용하여 레벨을 수정합니다.    드라이버 별 메시지 수준 설정보다는 인터페이스 별.    방출되는 메시지의 유형을보다 선택적으로 제어 할 수 있습니다.

netif_msg 권장 사항은 마이너 만 사용하여 이러한 기능을 추가합니다.  복잡성 및 코드 크기가 증가합니다.

권고 사항은 다음과 같다.     드라이버 별 정수 변수 "debug"를 모듈로 유지     매개 변수의 기본 수준은 '1'입니다.

Adding a per-interface private variable named "msg_enable".  The
variable is a bit map rather than a level, and is initialized as
   1 << debug
Or more precisely
    debug < 0 ? 0 : 1 << min(sizeof(int)-1, debug)

Messages should changes from
  if (debug > 1)
       printk(MSG_DEBUG "%s: ...
to
  if (np->msg_enable & NETIF_MSG_LINK)
       printk(MSG_DEBUG "%s: ...


The set of message levels is named
  Old level   Name   Bit position
    0    NETIF_MSG_DRV      0x0001
    1    NETIF_MSG_PROBE    0x0002
    2    NETIF_MSG_LINK     0x0004
    2    NETIF_MSG_TIMER    0x0004
    3    NETIF_MSG_IFDOWN   0x0008
    3    NETIF_MSG_IFUP     0x0008
    4    NETIF_MSG_RX_ERR   0x0010
    4    NETIF_MSG_TX_ERR   0x0010
    5    NETIF_MSG_TX_QUEUED    0x0020
    5    NETIF_MSG_INTR     0x0020
    6    NETIF_MSG_TX_DONE  0x0040
    6    NETIF_MSG_RX_STATUS    0x0040
    7    NETIF_MSG_PKTDATA  0x0080
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.