mirror of
https://github.com/libfuse/libfuse.git
synced 2026-07-07 14:47:41 +08:00
a32cec008c
Examples help to understand what needs to be done for ioctls. Signed-off-by: Bernd Schubert <bernd@bsbernd.com>
50 lines
1.3 KiB
C
50 lines
1.3 KiB
C
/*
|
|
FUSE-ioctl: ioctl support for FUSE
|
|
Copyright (C) 2008 SUSE Linux Products GmbH
|
|
Copyright (C) 2008 Tejun Heo <teheo@suse.de>
|
|
|
|
This program can be distributed under the terms of the GNU GPLv2.
|
|
See the file GPL2.txt.
|
|
*/
|
|
|
|
/** @file
|
|
* @tableofcontents
|
|
*
|
|
* Header file to share definitions between the ioctl example file
|
|
* systems (ioctl.c, ioctl_ll.c, cuse.c) and their test programs
|
|
* (ioctl_client.c, ioctl_ll_client.c, cuse_client.c).
|
|
*
|
|
* Restricted ioctls (FIOC_GET_SIZE, FIOC_SET_SIZE):
|
|
* Use _IOR/_IOW encoding - kernel handles data transfer automatically.
|
|
*
|
|
* Unrestricted ioctls (FIOC_READ, FIOC_WRITE):
|
|
* Use _IO encoding - require fuse_reply_ioctl_retry() in low-level API.
|
|
* Only work with CUSE (fuse kernel restriction).
|
|
*
|
|
* \include ioctl.h
|
|
*/
|
|
|
|
#include <sys/types.h>
|
|
#include <sys/uio.h>
|
|
#include <sys/ioctl.h>
|
|
|
|
enum {
|
|
FIOC_GET_SIZE = _IOR('E', 0, size_t),
|
|
FIOC_SET_SIZE = _IOW('E', 1, size_t),
|
|
|
|
/*
|
|
* The following two ioctls don't follow usual encoding rules
|
|
* and transfer variable amount of data.
|
|
*/
|
|
FIOC_READ = _IO('E', 2),
|
|
FIOC_WRITE = _IO('E', 3),
|
|
};
|
|
|
|
struct fioc_rw_arg {
|
|
off_t offset;
|
|
void *buf;
|
|
size_t size;
|
|
size_t prev_size; /* out param for previous total size */
|
|
size_t new_size; /* out param for new total size */
|
|
};
|