pps: access pps device by direct pointer
Using device index as a pointer needs some unnecessary work to be done every time the pointer is needed (in irq handler for example). Using a direct pointer is much more easy (and safe as well). Signed-off-by: Alexander Gordeev <lasaine@lvk.cs.msu.su> Acked-by: Rodolfo Giometti <giometti@linux.it> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
6f4229b511
commit
5e196d34a7
@@ -31,13 +31,16 @@
|
||||
* Global defines
|
||||
*/
|
||||
|
||||
struct pps_device;
|
||||
|
||||
/* The specific PPS source info */
|
||||
struct pps_source_info {
|
||||
char name[PPS_MAX_NAME_LEN]; /* simbolic name */
|
||||
char path[PPS_MAX_NAME_LEN]; /* path of connected device */
|
||||
int mode; /* PPS's allowed mode */
|
||||
|
||||
void (*echo)(int source, int event, void *data); /* PPS echo function */
|
||||
void (*echo)(struct pps_device *pps,
|
||||
int event, void *data); /* PPS echo function */
|
||||
|
||||
struct module *owner;
|
||||
struct device *dev;
|
||||
@@ -65,35 +68,27 @@ struct pps_device {
|
||||
unsigned int id; /* PPS source unique ID */
|
||||
struct cdev cdev;
|
||||
struct device *dev;
|
||||
int devno;
|
||||
struct fasync_struct *async_queue; /* fasync method */
|
||||
spinlock_t lock;
|
||||
|
||||
atomic_t usage; /* usage count */
|
||||
};
|
||||
|
||||
/*
|
||||
* Global variables
|
||||
*/
|
||||
|
||||
extern spinlock_t pps_idr_lock;
|
||||
extern struct idr pps_idr;
|
||||
|
||||
extern struct device_attribute pps_attrs[];
|
||||
|
||||
/*
|
||||
* Exported functions
|
||||
*/
|
||||
|
||||
struct pps_device *pps_get_source(int source);
|
||||
extern void pps_put_source(struct pps_device *pps);
|
||||
extern int pps_register_source(struct pps_source_info *info,
|
||||
int default_params);
|
||||
extern void pps_unregister_source(int source);
|
||||
extern struct pps_device *pps_register_source(
|
||||
struct pps_source_info *info, int default_params);
|
||||
extern void pps_unregister_source(struct pps_device *pps);
|
||||
extern int pps_register_cdev(struct pps_device *pps);
|
||||
extern void pps_unregister_cdev(struct pps_device *pps);
|
||||
extern void pps_event(int source, struct pps_event_time *ts, int event,
|
||||
void *data);
|
||||
extern void pps_event(struct pps_device *pps,
|
||||
struct pps_event_time *ts, int event, void *data);
|
||||
|
||||
static inline void timespec_to_pps_ktime(struct pps_ktime *kt,
|
||||
struct timespec ts)
|
||||
|
Reference in New Issue
Block a user