Blame view

drivers/input/input-compat.h 1.57 KB
d2912cb15   Thomas Gleixner   treewide: Replace...
1
  /* SPDX-License-Identifier: GPL-2.0-only */
2d56f3a32   Philip Langdale   Input: refactor e...
2
3
4
5
6
7
8
  #ifndef _INPUT_COMPAT_H
  #define _INPUT_COMPAT_H
  
  /*
   * 32bit compatibility wrappers for the input subsystem.
   *
   * Very heavily based on evdev.c - Copyright (c) 1999-2002 Vojtech Pavlik
2d56f3a32   Philip Langdale   Input: refactor e...
9
10
11
12
13
14
15
   */
  
  #include <linux/compiler.h>
  #include <linux/compat.h>
  #include <linux/input.h>
  
  #ifdef CONFIG_COMPAT
2d56f3a32   Philip Langdale   Input: refactor e...
16
  struct input_event_compat {
152194fe9   Deepa Dinamani   Input: extend usa...
17
18
  	compat_ulong_t sec;
  	compat_ulong_t usec;
2d56f3a32   Philip Langdale   Input: refactor e...
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
  	__u16 type;
  	__u16 code;
  	__s32 value;
  };
  
  struct ff_periodic_effect_compat {
  	__u16 waveform;
  	__u16 period;
  	__s16 magnitude;
  	__s16 offset;
  	__u16 phase;
  
  	struct ff_envelope envelope;
  
  	__u32 custom_len;
  	compat_uptr_t custom_data;
  };
  
  struct ff_effect_compat {
  	__u16 type;
  	__s16 id;
  	__u16 direction;
  	struct ff_trigger trigger;
  	struct ff_replay replay;
  
  	union {
  		struct ff_constant_effect constant;
  		struct ff_ramp_effect ramp;
  		struct ff_periodic_effect_compat periodic;
  		struct ff_condition_effect condition[2]; /* One for each axis */
  		struct ff_rumble_effect rumble;
  	} u;
  };
  
  static inline size_t input_event_size(void)
  {
b8b4ead11   Andrew Morton   drivers/input: el...
55
  	return (in_compat_syscall() && !COMPAT_USE_64BIT_TIME) ?
2d56f3a32   Philip Langdale   Input: refactor e...
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
  		sizeof(struct input_event_compat) : sizeof(struct input_event);
  }
  
  #else
  
  static inline size_t input_event_size(void)
  {
  	return sizeof(struct input_event);
  }
  
  #endif /* CONFIG_COMPAT */
  
  int input_event_from_user(const char __user *buffer,
  			 struct input_event *event);
  
  int input_event_to_user(char __user *buffer,
  			const struct input_event *event);
  
  int input_ff_effect_from_user(const char __user *buffer, size_t size,
  			      struct ff_effect *effect);
  
  #endif /* _INPUT_COMPAT_H */