Kernel: Do NOT use global variable as possible as you can 尽量不使用全局变量

和userspace程序一样,全局变量始终需要慎重考虑使用。

kernel的并发更加激烈,多CPU的操作,多个driver的并发操作,一个不慎就有可能引发全局变量的corruption。

特别是当有多个相同设备使用同一个driver时,这个driver就有多个实例,此时全局变量的使用就必然需要考虑锁的问题。

可以考虑尽量将变量放入driver私有structure中,这样就好了很多,只需要考虑多个CPU是否会同时操作的问题。

在userspace程序中,比如书写gstreamer的plugin时,全局变量也是绝对禁止的,因为你的plugin很可能在某个pipeline中出现多次从而拥有多个实例。

原文地址:https://www.cnblogs.com/super119/p/2800887.html