Re: [PATCH 3/4] counter: Add character device interface

2020-04-30 Thread kbuild test robot
Hi William,

I love your patch! Yet something to improve:

[auto build test ERROR on stm32/stm32-next]
[cannot apply to linus/master linux/master v5.7-rc3 next-20200430]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:
https://github.com/0day-ci/linux/commits/William-Breathitt-Gray/Introduce-the-Counter-character-device-interface/20200430-051734
base:   https://git.kernel.org/pub/scm/linux/kernel/git/atorgue/stm32.git 
stm32-next
config: x86_64-randconfig-d003-20200501 (attached as .config)
compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot 

All errors (new ones prefixed by >>):

   In file included from :32:0:
>> ./usr/include/linux/counter.h:22:2: error: unknown type name 'size_t'
 size_t num_signals;
 ^~
   ./usr/include/linux/counter.h:23:2: error: unknown type name 'size_t'
 size_t num_counts;
 ^~
   ./usr/include/linux/counter.h:24:2: error: unknown type name 'size_t'
 size_t num_ext;
 ^~
   ./usr/include/linux/counter.h:35:2: error: unknown type name 'size_t'
 size_t index;
 ^~
   ./usr/include/linux/counter.h:39:2: error: unknown type name 'size_t'
 size_t num_ext;
 ^~
   ./usr/include/linux/counter.h:50:2: error: unknown type name 'size_t'
 size_t count_index;
 ^~
   ./usr/include/linux/counter.h:51:2: error: unknown type name 'size_t'
 size_t index;
 ^~
   ./usr/include/linux/counter.h:53:2: error: unknown type name 'size_t'
 size_t num_actions;
 ^~
   ./usr/include/linux/counter.h:54:2: error: unknown type name 'size_t'
 size_t signal_index;
 ^~
   ./usr/include/linux/counter.h:67:2: error: unknown type name 'size_t'
 size_t index;
 ^~
   ./usr/include/linux/counter.h:71:2: error: unknown type name 'size_t'
 size_t num_functions;
 ^~
   ./usr/include/linux/counter.h:72:2: error: unknown type name 'size_t'
 size_t num_synapses;
 ^~
   ./usr/include/linux/counter.h:73:2: error: unknown type name 'size_t'
 size_t num_ext;
 ^~
   ./usr/include/linux/counter.h:86:2: error: unknown type name 'size_t'
 size_t owner_index;
 ^~
   ./usr/include/linux/counter.h:87:2: error: unknown type name 'size_t'
 size_t index;
 ^~
   ./usr/include/linux/counter.h:99:2: error: unknown type name 'size_t'
 size_t index;
 ^~
   ./usr/include/linux/counter.h:110:2: error: unknown type name 'size_t'
 size_t index;
 ^~
   ./usr/include/linux/counter.h:121:2: error: unknown type name 'size_t'
 size_t index;
 ^~
   ./usr/include/linux/counter.h:133:2: error: unknown type name 'size_t'
 size_t count_index;
 ^~
   ./usr/include/linux/counter.h:134:2: error: unknown type name 'size_t'
 size_t index;
 ^~
   ./usr/include/linux/counter.h:146:2: error: unknown type name 'size_t'
 size_t count_index;
 ^~
   ./usr/include/linux/counter.h:147:2: error: unknown type name 'size_t'
 size_t index;
 ^~
   ./usr/include/linux/counter.h:160:2: error: unknown type name 'size_t'
 size_t count_index;
 ^~
   ./usr/include/linux/counter.h:161:2: error: unknown type name 'size_t'
 size_t synapse_index;
 ^~
   ./usr/include/linux/counter.h:162:2: error: unknown type name 'size_t'
 size_t index;
 ^~
   ./usr/include/linux/counter.h:176:2: error: unknown type name 'size_t'
 size_t owner_index;
 ^~
   ./usr/include/linux/counter.h:177:2: error: unknown type name 'size_t'
 size_t index;
 ^~
>> ./usr/include/linux/counter.h:179:2: error: unknown type name 'bool'
 bool data;
 ^~~~
   ./usr/include/linux/counter.h:191:2: error: unknown type name 'size_t'
 size_t owner_index;
 ^~
   ./usr/include/linux/counter.h:192:2: error: unknown type name 'size_t'
 size_t index;
 ^~
   ./usr/include/linux/counter.h:206:2: error: unknown type name 'size_t'
 size_t owner_index;
 ^~
   ./usr/include/linux/counter.h:207:2: error: unknown type name 'size_t'
 size_t index;
 ^~
   ./usr/include/linux/counter.h:221:2: error: unknown type name 'size_t'
 size_t owner_index;
 ^~
   ./usr/include/linux/counter.h:222:2: error: unknown type name 'size_t'
 size_t index;
 ^~
   ./usr/include/linux/counter.h:224:2: error: unknown type name 'size_t'
 size_t enum_index;
 ^~
   ./usr/include/linux/counter.h:237:2: error: unknown type name 'size_t'
 size_t owner_index;
 ^~
   ./usr/include/linux/counter.h:238:2: error: unknown type name 'size_t'
 size_t ext_index;
 ^~
   ./usr/inclu

[PATCH 3/4] counter: Add character device interface

2020-04-29 Thread William Breathitt Gray
This patch introduces a character device interface for the Counter
subsystem. Device information and control is exposed through a standard
set of ioctl commands.

A high-level view of how a count value is passed down from a counter
driver can be exemplified by the following:

 --
/ Counter device   \
+--+
| Count register: 0x28 |
+--+
|
 -
/ raw count data /
-
|
V
++
| Counter device driver  |--+
++  |
| Processes data from device |   ---
||  / driver callbacks /
| Type: unsigned long|  ---
| Value: 42  |  |
++  |
|   |
    |
/ unsigned long /   |
|
|   |
|   V
|   +--+
|   | Counter core |
|   +--+
|   | Routes device driver |
|   | callbacks to the |
|   | userspace interfaces |
|   +--+
|   |
|---
|   / driver callbacks /
|   ---
|   |
+---+---+   |
|   |   |
|   +---|---+
|   |   |
V   |   V
++  |  +-+
| Counter sysfs  |<-+->| Counter chrdev  |
++ +-+
| Translates to the  | | Translates to the   |
| standard Counter   | | standard Counter|
| sysfs output   | | character device|
|| |-+
| Type: const char * | | Type: unsigned long |
| Value: "42"| | Value: 42   |
++ +-+
|   |
 --- 
/ const char * // unsigned long /
--- 
|   |
|   V
|   +---+
|   | ioctl |
|   +---+
|   \ Count: 42 /
|---
|
V
+--+
| `/sys/bus/counter/devices/counterX/countY/count` |
+--+
\ Count: "42"  /
 --

Signed-off-by: William Breathitt Gray 
---
 MAINTAINERS  |1 +
 drivers/counter/Makefile |3 +-
 drivers/counter/counter-chrdev.c | 1134 ++
 drivers/counter/counter-chrdev.h |   16 +
 drivers/counter/counter-core.c   |   34 +-
 include/linux/counter.h  |2 +
 include/uapi/linux/counter.h |  313 +
 7 files changed, 1500 insertions(+), 3 deletions(-)
 create mode 100644 drivers/counter/counter-chrdev.c
 create mode 100644 drivers/counter/counter-chrdev.h
 create mode 100644 include/uapi/linux/counter.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 89def3fe1c76..b8c7677e6564 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -4367,6 +4367,7 @@ F:Documentation/ABI/testing/sysfs-bus-counter*
 F: Documentation/driver-api/generic-counter.rst
 F: drivers/counter/
 F: include/linux/counter.h
+F: include/uapi/linux/counter.h
 F: include/uapi/linux/counter-types.h
 
 CPMAC ETHERNET DRIVER
diff --git