CRC如何计算内核API以及公开的模块API?

时间:2014-04-29 08:55:19

标签: linux-kernel kernel kernel-module

当我们编译启用了CONFIG_MODVERSIONS的内核时,会生成一个名为Module.symvers的文件。

其样本内容为

             0x445532c1  usb_serial_generic_submit_read_urb  drivers/usb/serial/usbserial  EXPORT_SYMBOL_GPL
             0xc47c22e8  mpt_deregister  drivers/message/fusion/mptbase  EXPORT_SYMBOL
             0xdd76c3a2  sata_pmp_error_handler  drivers/ata/libata  EXPORT_SYMBOL_GPL

如何生成CRC?

   When a symbol table is found in the source, the symbol will be
   expanded to its full definition, where  all  struct's,  unions,
   enums  and  typedefs will be expanded down to their basic part,
   recursively.  This final string will then be used as input to a
   CRC algorithm that will give an integer that will change as
   soon as any of the included definitions changes, for this symbol.

   -http://www.skynet.ie/~mark/pub/symbols.txt

我想知道,

如果函数定义保持不变,但在内部,API可能会调用其定义更改的函数,该怎么办? CRC会改变吗?

0 个答案:

没有答案