设备属性权限导致的编译错误

本文解决了在Linux内核中定义设备属性时遇到的权限设置错误问题,通过更改特定属性的权限位,成功避免了编译错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先记录下来,后续研究原因。

 

static DEVICE_ATTR(debug_mesg, S_IRUGO | S_IWUGO, show_debug_mesg, store_debug_mesg);

将S_IWUGO改为S_IWUSR就好了。

 

In file included from /home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/thread_info.h:11:0,
                 from /home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/asm-generic/preempt.h:4,
                 from arch/arm64/include/generated/asm/preempt.h:1,
                 from /home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/preempt.h:18,
                 from /home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/spinlock.h:50,
                 from /home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/seqlock.h:35,
                 from /home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/time.h:5,
                 from /home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/uapi/linux/timex.h:56,
                 from /home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/timex.h:56,
                 from /home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/sched.h:19,
                 from /home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/arch/arm64/include/asm/compat.h:25,
                 from /home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/arch/arm64/include/asm/stat.h:23,
                 from /home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/stat.h:5,
                 from /home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/module.h:10,
                 from /home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-
3.18/drivers/input/touchscreen/elan_ktf/elan_ktf_6720.c:47:
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/bug.h:33:45: error: negative width in bit-
field '<anonymous>'
 #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/kernel.h:827:3: note: in expansion of macro
'BUILD_BUG_ON_ZERO'
   BUILD_BUG_ON_ZERO((perms) & 2) +    \
   ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/sysfs.h:75:12: note: in expansion of macro
'VERIFY_OCTAL_PERMISSIONS'
    .mode = VERIFY_OCTAL_PERMISSIONS(_mode) },  \
            ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/device.h:570:45: note: in expansion of macro
'__ATTR'
  struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/drivers/input/touchscreen/elan_ktf/elan_ktf_6720.c:2812:8:
note: in expansion of macro 'DEVICE_ATTR'
 static DEVICE_ATTR(debug_mesg, S_IRUGO | S_IWUGO, show_debug_mesg, store_debug_mesg);
        ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/bug.h:33:45: error: negative width in bit-
field '<anonymous>'
 #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/kernel.h:827:3: note: in expansion of macro
'BUILD_BUG_ON_ZERO'
   BUILD_BUG_ON_ZERO((perms) & 2) +    \
   ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/sysfs.h:75:12: note: in expansion of macro
'VERIFY_OCTAL_PERMISSIONS'
    .mode = VERIFY_OCTAL_PERMISSIONS(_mode) },  \
            ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/device.h:570:45: note: in expansion of macro
'__ATTR'
  struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/drivers/input/touchscreen/elan_ktf/elan_ktf_6720.c:2817:8:
note: in expansion of macro 'DEVICE_ATTR'
 static DEVICE_ATTR(reset, S_IRUGO | S_IWUGO, show_reset, store_reset);
        ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/bug.h:33:45: error: negative width in bit-
field '<anonymous>'
 #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/kernel.h:827:3: note: in expansion of macro
'BUILD_BUG_ON_ZERO'
   BUILD_BUG_ON_ZERO((perms) & 2) +    \
   ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/sysfs.h:75:12: note: in expansion of macro
'VERIFY_OCTAL_PERMISSIONS'
    .mode = VERIFY_OCTAL_PERMISSIONS(_mode) },  \
            ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/device.h:570:45: note: in expansion of macro
'__ATTR'
  struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/drivers/input/touchscreen/elan_ktf/elan_ktf_6720.c:2818:8:
note: in expansion of macro 'DEVICE_ATTR'
 static DEVICE_ATTR(iap, S_IWUGO, NULL, store_iap);
        ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/bug.h:33:45: error: negative width in bit-
field '<anonymous>'
 #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/kernel.h:827:3: note: in expansion of macro
'BUILD_BUG_ON_ZERO'
   BUILD_BUG_ON_ZERO((perms) & 2) +    \
   ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/sysfs.h:75:12: note: in expansion of macro
'VERIFY_OCTAL_PERMISSIONS'
    .mode = VERIFY_OCTAL_PERMISSIONS(_mode) },  \
            ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/device.h:570:45: note: in expansion of macro
'__ATTR'
  struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/drivers/input/touchscreen/elan_ktf/elan_ktf_6720.c:2819:8:
note: in expansion of macro 'DEVICE_ATTR'
 static DEVICE_ATTR(enable_irq, S_IRUGO | S_IWUGO, show_enable_irq, store_enable_irq);
        ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/bug.h:33:45: error: negative width in bit-
field '<anonymous>'
 #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/kernel.h:827:3: note: in expansion of macro
'BUILD_BUG_ON_ZERO'
   BUILD_BUG_ON_ZERO((perms) & 2) +    \
   ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/sysfs.h:75:12: note: in expansion of macro
'VERIFY_OCTAL_PERMISSIONS'
    .mode = VERIFY_OCTAL_PERMISSIONS(_mode) },  \
            ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/device.h:570:45: note: in expansion of macro
'__ATTR'
  struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/drivers/input/touchscreen/elan_ktf/elan_ktf_6720.c:2820:8:
note: in expansion of macro 'DEVICE_ATTR'
 static DEVICE_ATTR(disable_irq, S_IRUGO | S_IWUGO, show_disable_irq, store_disable_irq);
        ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/bug.h:33:45: error: negative width in bit-
field '<anonymous>'
 #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/kernel.h:827:3: note: in expansion of macro
'BUILD_BUG_ON_ZERO'
   BUILD_BUG_ON_ZERO((perms) & 2) +    \
   ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/sysfs.h:75:12: note: in expansion of macro
'VERIFY_OCTAL_PERMISSIONS'
    .mode = VERIFY_OCTAL_PERMISSIONS(_mode) },  \
            ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/device.h:570:45: note: in expansion of macro
'__ATTR'
  struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/drivers/input/touchscreen/elan_ktf/elan_ktf_6720.c:2821:8:
note: in expansion of macro 'DEVICE_ATTR'
 static DEVICE_ATTR(calibrate, S_IWUGO, NULL, store_calibrate);
        ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/bug.h:33:45: error: negative width in bit-
field '<anonymous>'
 #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/kernel.h:827:3: note: in expansion of macro
'BUILD_BUG_ON_ZERO'
   BUILD_BUG_ON_ZERO((perms) & 2) +    \
   ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/sysfs.h:75:12: note: in expansion of macro
'VERIFY_OCTAL_PERMISSIONS'
    .mode = VERIFY_OCTAL_PERMISSIONS(_mode) },  \
            ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/device.h:570:45: note: in expansion of macro
'__ATTR'
  struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/drivers/input/touchscreen/elan_ktf/elan_ktf_6720.c:2822:8:
note: in expansion of macro 'DEVICE_ATTR'
 static DEVICE_ATTR(shift_finger_id, S_IWUGO, NULL, store_shift_finger_id);
        ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/bug.h:33:45: error: negative width in bit-
field '<anonymous>'
 #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/kernel.h:827:3: note: in expansion of macro
'BUILD_BUG_ON_ZERO'
   BUILD_BUG_ON_ZERO((perms) & 2) +    \
   ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/sysfs.h:75:12: note: in expansion of macro
'VERIFY_OCTAL_PERMISSIONS'
    .mode = VERIFY_OCTAL_PERMISSIONS(_mode) },  \
            ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/device.h:570:45: note: in expansion of macro
'__ATTR'
  struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/drivers/input/touchscreen/elan_ktf/elan_ktf_6720.c:2825:8:
note: in expansion of macro 'DEVICE_ATTR'
 static DEVICE_ATTR(fw_update_in_driver, S_IWUGO, NULL, store_fw_update_in_driver);
        ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/bug.h:33:45: error: negative width in bit-
field '<anonymous>'
 #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/kernel.h:827:3: note: in expansion of macro
'BUILD_BUG_ON_ZERO'
   BUILD_BUG_ON_ZERO((perms) & 2) +    \
   ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/sysfs.h:75:12: note: in expansion of macro
'VERIFY_OCTAL_PERMISSIONS'
    .mode = VERIFY_OCTAL_PERMISSIONS(_mode) },  \
            ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/device.h:570:45: note: in expansion of macro
'__ATTR'
  struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/drivers/input/touchscreen/elan_ktf/elan_ktf_6720.c:2826:8:
note: in expansion of macro 'DEVICE_ATTR'
 static DEVICE_ATTR(fw_update, S_IWUGO, NULL, store_fw_update);
        ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/bug.h:33:45: error: negative width in bit-
field '<anonymous>'
 #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/kernel.h:827:3: note: in expansion of macro
'BUILD_BUG_ON_ZERO'
   BUILD_BUG_ON_ZERO((perms) & 2) +    \
   ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/sysfs.h:75:12: note: in expansion of macro
'VERIFY_OCTAL_PERMISSIONS'
    .mode = VERIFY_OCTAL_PERMISSIONS(_mode) },  \
            ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/include/linux/device.h:570:45: note: in expansion of macro
'__ATTR'
  struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
                                             ^
/home/android/work2/R20/LA.UM.6.6/LINUX/android/kernel/msm-3.18/drivers/input/touchscreen/elan_ktf/elan_ktf_6720.c:2827:8:
note: in expansion of macro 'DEVICE_ATTR'
 static DEVICE_ATTR(fw_update_elan, S_IWUGO, NULL, store_fw_update_elan);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值