diff mbox

[1/2] libnvdimm: add missing macros

Message ID 20160708162911.18756-1-eric.engestrom@imgtec.com (mailing list archive)
State New, archived
Headers show

Commit Message

Eric Engestrom July 8, 2016, 4:29 p.m. UTC
Signed-off-by: Eric Engestrom <eric.engestrom@imgtec.com>
---

This can't compile without these macros… Is this header really used by anyone?
Should it be removed, to avoid bit-rot?

---
 include/uapi/linux/ndctl.h | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

kernel test robot July 8, 2016, 5:25 p.m. UTC | #1
Hi,

[auto build test WARNING on linux-nvdimm/libnvdimm-for-next]
[also build test WARNING on v4.7-rc6 next-20160708]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Eric-Engestrom/libnvdimm-add-missing-macros/20160709-003310
base:   https://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm.git libnvdimm-for-next
config: x86_64-allmodconfig (attached as .config)
compiler: gcc-6 (Debian 6.1.1-1) 6.1.1 20160430
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All warnings (new ones prefixed by >>):

   In file included from drivers/dax/../nvdimm/nd.h:20:0,
                    from drivers/dax/pmem.c:18:
>> include/uapi/linux/ndctl.h:24:0: warning: "ARRAY_SIZE" redefined
    #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr)[0])
    
   In file included from include/linux/percpu-refcount.h:49:0,
                    from drivers/dax/pmem.c:13:
   include/linux/kernel.h:54:0: note: this is the location of the previous definition
    #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
    

vim +/ARRAY_SIZE +24 include/uapi/linux/ndctl.h

     8	 * This program is distributed in the hope it will be useful, but WITHOUT ANY
     9	 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    10	 * FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for
    11	 * more details.
    12	 */
    13	#ifndef __NDCTL_H__
    14	#define __NDCTL_H__
    15	
    16	#include <linux/types.h>
    17	
    18	#ifdef __GNUC__
    19	#define __packed __attribute__((packed))
    20	#else
    21	#define __packed
    22	#endif
    23	
  > 24	#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr)[0])
    25	
    26	struct nd_cmd_smart {
    27		__u32 status;
    28		__u8 data[128];
    29	} __packed;
    30	
    31	#define ND_SMART_HEALTH_VALID	(1 << 0)
    32	#define ND_SMART_TEMP_VALID 	(1 << 1)

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
Dan Williams July 8, 2016, 7:32 p.m. UTC | #2
On Fri, Jul 8, 2016 at 9:29 AM, Eric Engestrom
<eric.engestrom@imgtec.com> wrote:
> Signed-off-by: Eric Engestrom <eric.engestrom@imgtec.com>
> ---
>
> This can't compile without these macros… Is this header really used by anyone?
> Should it be removed, to avoid bit-rot?

It's used by ndctl [1].  You can't use it directly in userspace, you
need the kernel's "make headers_install" to strip out the
kernel-specific macros.

[1]: https://github.com/pmem/ndctl
diff mbox

Patch

diff --git a/include/uapi/linux/ndctl.h b/include/uapi/linux/ndctl.h
index 309915f..50ae5e7 100644
--- a/include/uapi/linux/ndctl.h
+++ b/include/uapi/linux/ndctl.h
@@ -15,6 +15,14 @@ 
 
 #include <linux/types.h>
 
+#ifdef __GNUC__
+#define __packed __attribute__((packed))
+#else
+#define __packed
+#endif
+
+#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr)[0])
+
 struct nd_cmd_smart {
 	__u32 status;
 	__u8 data[128];