Welchen Zweck haben Pre-Prozessor-Makros in den Dateien linux / compiler.h?

9

Ich bin sehr neu im Linux-Kernel. Und ich verwende das Sparse-Tool, um das Rauschen im Code zu entfernen. Ich habe diese Makros gefunden:

%Vor%

Und jetzt möchte ich wissen: Wie werden sie von sparse verwendet, um die Fehler / Warnung zu melden?

Meine Fragen:

  1. Ich möchte die Details, wie sie Compiler und spärlich helfen, die Warnungen zu melden.
  2. Was sind diese address_space (x) Kontext (X, x, x) und dort Zweck?
  3. Was ist der Zweck von __ nocast , __ force , __ Benutzer , __ safe ?
  4. ?
Amit Sharma 17.10.2014, 13:04
quelle

1 Antwort

4

Ich denke, all diese Makros haben nur Bedeutung im Kontext von sparse (manpages hier - Sie können die Beschreibungen aller dieser Attribute und spärliche Warnungen dort finden). Wenn Sie oben in der kopierten Quelldatei nachsehen, wird ein großes Makro __CHECKER__ verwendet, um sie zu aktivieren.

Ich bin mir nicht sicher, ob gcc irgendetwas mit ihnen an dieser Stelle macht - ich denke, es ignoriert sie stillschweigend ... In einer seiner E-Mails im Jahr 2004 sagte Linus Torvalds:

  

Dies ist wichtig zu erinnern: Für gcc sind die spärlichen Annotationen   bedeutungslos. Sie können immer noch nützlich sein, nur um den Programmierer zu informieren   "Hey, der Zeiger, den du bekommen hast, war kein normaler Zeiger"   lesbare Weise, aber am Ende, wenn Sie spärlich verwenden, tun sie es nicht   eigentlich tue irgendetwas.

Es sind einige Tickets für diesen Zweck geöffnet - Ссылка .

    
dragosht 20.10.2014 07:59
quelle

Tags und Links