.options =	WDIOF_KEEPALIVEPING | WDIOF_SETTIMEOUT | 
.options =	WDIOF_KEEPALIVEPING | 
static int asr_ioctl(struct inode *inode, struct file *file,		     unsigned int cmd, unsigned long arg){	static const struct watchdog_info ident = {		.options =	WDIOF_KEEPALIVEPING | WDIOF_SETTIMEOUT |				WDIOF_MAGICCLOSE,		.identity =	"IBM ASR"	};	void __user *argp = (void __user *)arg;	int __user *p = argp;	int heartbeat;	switch (cmd) {		case WDIOC_GETSUPPORT:			return copy_to_user(argp, &ident, sizeof(ident)) ?				-EFAULT : 0;		case WDIOC_GETSTATUS:		case WDIOC_GETBOOTSTATUS:			return put_user(0, p);		case WDIOC_KEEPALIVE:			asr_toggle();			return 0;		/*		 * The hardware has a fixed timeout value, so WDIOC_SETTIMEOUT		 * is a noop and WDIOC_GETTIMEOUT always returns 256.		 */		case WDIOC_SETTIMEOUT:			if (get_user(heartbeat, p))				return -EFAULT;			/* Fall */		case WDIOC_GETTIMEOUT:			heartbeat = 256;			return put_user(heartbeat, p);		case WDIOC_SETOPTIONS: {			int new_options, retval = -EINVAL;			if (get_user(new_options, p))				return -EFAULT;			if (new_options & WDIOS_DISABLECARD) {				asr_disable();				retval = 0;			}			if (new_options & WDIOS_ENABLECARD) {				asr_enable();				asr_toggle();				retval = 0;			}			return retval;		}	}	return -ENOIOCTLCMD;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/266aa1c4b3d004123d330eb412cc26a3d10f9029/ibmasr.c/buggy/drivers/char/watchdog/ibmasr.c