2010-12-11 13:19:49 -06:00
|
|
|
/*
|
2010-12-14 16:55:31 -06:00
|
|
|
* skypopen.h -- definitions for the char module
|
2010-12-11 13:19:49 -06:00
|
|
|
*
|
2011-04-20 03:32:03 -05:00
|
|
|
* Copyright (C) 2010 Giovanni Maruzzelli
|
2010-12-11 13:19:49 -06:00
|
|
|
* Copyright (C) 2001 Alessandro Rubini and Jonathan Corbet
|
|
|
|
* Copyright (C) 2001 O'Reilly & Associates
|
|
|
|
*
|
|
|
|
* The source code in this file can be freely used, adapted,
|
|
|
|
* and redistributed in source or binary form, so long as an
|
|
|
|
* acknowledgment appears in derived source files. The citation
|
|
|
|
* should list that the code comes from the book "Linux Device
|
|
|
|
* Drivers" by Alessandro Rubini and Jonathan Corbet, published
|
|
|
|
* by O'Reilly & Associates. No warranty is attached;
|
|
|
|
* we cannot take responsibility for errors or fitness for use.
|
|
|
|
*
|
2010-12-14 16:55:31 -06:00
|
|
|
* $Id: skypopen.h,v 1.15 2004/11/04 17:51:18 rubini Exp $
|
2010-12-11 13:19:49 -06:00
|
|
|
*/
|
|
|
|
|
2010-12-14 16:55:31 -06:00
|
|
|
#ifndef _SKYPOPEN_H_
|
|
|
|
#define _SKYPOPEN_H_
|
2010-12-11 13:19:49 -06:00
|
|
|
|
2011-04-25 11:36:42 -05:00
|
|
|
#include <linux/version.h>
|
2010-12-11 13:19:49 -06:00
|
|
|
#include <linux/ioctl.h> /* needed for the _IOW etc stuff used later */
|
2012-06-20 11:28:28 +02:00
|
|
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 4, 0)
|
|
|
|
#include <asm/switch_to.h> /* cli(), *_flags */
|
|
|
|
#else
|
|
|
|
#include <asm/system.h> /* cli(), *_flags */
|
|
|
|
#endif //LINUX_VERSION_CODE >= KERNEL_VERSION(3, 4, 0)
|
|
|
|
|
2010-12-11 13:19:49 -06:00
|
|
|
|
2011-04-25 11:36:42 -05:00
|
|
|
#if LINUX_VERSION_CODE == KERNEL_VERSION(2, 6, 18)
|
|
|
|
#define CENTOS_5
|
2011-04-20 03:32:03 -05:00
|
|
|
#define WANT_HRTIMER /* undef this only if you don't want to use High Resolution Timers (why?) */
|
2011-04-25 11:36:42 -05:00
|
|
|
#endif /* CentOS 5.x */
|
|
|
|
|
|
|
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 24)
|
|
|
|
#define WANT_HRTIMER
|
|
|
|
#endif /* HRTIMER */
|
|
|
|
|
2011-12-09 12:01:48 +01:00
|
|
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0)
|
|
|
|
#define WANT_DEFINE_SPINLOCK
|
|
|
|
#endif /* DEFINE_SPINLOCK */
|
|
|
|
|
2011-04-25 09:13:39 -05:00
|
|
|
#define SKYPOPEN_BLK 1920
|
|
|
|
#define SKYPOPEN_SLEEP 20
|
2010-12-17 08:44:20 -06:00
|
|
|
|
|
|
|
|
2010-12-14 16:55:31 -06:00
|
|
|
#define SKYPOPEN_MAJOR 14 /* dynamic major by default */
|
2011-04-20 03:32:03 -05:00
|
|
|
#define SKYPOPEN_MINOR 3 /* dynamic major by default */
|
|
|
|
#define SKYPOPEN_NR_DEVS 1 /* not useful, I'm too lazy to remove it */
|
2010-12-11 13:19:49 -06:00
|
|
|
|
2011-04-20 03:32:03 -05:00
|
|
|
#ifdef CENTOS_5
|
|
|
|
#define HRTIMER_MODE_REL HRTIMER_REL
|
|
|
|
#endif// CENTOS_5
|
2010-12-11 13:19:49 -06:00
|
|
|
|
2010-12-14 16:55:31 -06:00
|
|
|
struct skypopen_dev {
|
2010-12-11 13:19:49 -06:00
|
|
|
struct cdev cdev; /* Char device structure */
|
|
|
|
wait_queue_head_t inq; /* read and write queues */
|
|
|
|
wait_queue_head_t outq; /* read and write queues */
|
2010-12-17 08:44:20 -06:00
|
|
|
#ifndef WANT_HRTIMER
|
2010-12-11 13:19:49 -06:00
|
|
|
struct timer_list timer_inq;
|
|
|
|
struct timer_list timer_outq;
|
2010-12-17 08:44:20 -06:00
|
|
|
#else// WANT_HRTIMER
|
|
|
|
struct hrtimer timer_inq;
|
|
|
|
struct hrtimer timer_outq;
|
|
|
|
#endif// WANT_HRTIMER
|
2010-12-14 16:55:31 -06:00
|
|
|
int timer_inq_started;
|
|
|
|
int timer_outq_started;
|
2013-06-21 10:57:59 +02:00
|
|
|
int opened;
|
2010-12-11 13:19:49 -06:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* The different configurable parameters
|
|
|
|
*/
|
2010-12-14 16:55:31 -06:00
|
|
|
extern int skypopen_major; /* main.c */
|
|
|
|
extern int skypopen_nr_devs;
|
2010-12-11 13:19:49 -06:00
|
|
|
|
2010-12-14 16:55:31 -06:00
|
|
|
#endif /* _SKYPOPEN_H_ */
|