procfs skeleton file should include an example write method.
This commit is contained in:
parent
c67943ed1d
commit
504f677c20
@ -107,7 +107,9 @@ static int skel_open(FAR struct file *filep, FAR const char *relpath,
|
|||||||
static int skel_close(FAR struct file *filep);
|
static int skel_close(FAR struct file *filep);
|
||||||
static ssize_t skel_read(FAR struct file *filep, FAR char *buffer,
|
static ssize_t skel_read(FAR struct file *filep, FAR char *buffer,
|
||||||
size_t buflen);
|
size_t buflen);
|
||||||
|
/* TODO: Should not support skel_write if read-only */
|
||||||
|
static ssize_t skel_write(FAR struct file *filep, FAR const char *buffer,
|
||||||
|
size_t buflen);
|
||||||
static int skel_dup(FAR const struct file *oldp,
|
static int skel_dup(FAR const struct file *oldp,
|
||||||
FAR struct file *newp);
|
FAR struct file *newp);
|
||||||
|
|
||||||
@ -137,9 +139,12 @@ const struct procfs_operations skel_procfsoperations =
|
|||||||
skel_open, /* open */
|
skel_open, /* open */
|
||||||
skel_close, /* close */
|
skel_close, /* close */
|
||||||
skel_read, /* read */
|
skel_read, /* read */
|
||||||
|
/* TODO: Decide if this procfs entry supports write access */
|
||||||
/* TODO: Decide if this driver supports write */
|
#if 0 /* NULL if the procfs entry does not support write access. */
|
||||||
NULL, /* write */
|
NULL, /* write */
|
||||||
|
#else
|
||||||
|
skel_write, /* write */
|
||||||
|
#endif
|
||||||
|
|
||||||
skel_dup, /* dup */
|
skel_dup, /* dup */
|
||||||
|
|
||||||
@ -190,7 +195,6 @@ static int skel_open(FAR struct file *filep, FAR const char *relpath,
|
|||||||
|
|
||||||
/* TODO: Initialize the context specific data here */
|
/* TODO: Initialize the context specific data here */
|
||||||
|
|
||||||
|
|
||||||
/* Save the open file structure as the open-specific state in
|
/* Save the open file structure as the open-specific state in
|
||||||
* filep->f_priv.
|
* filep->f_priv.
|
||||||
*/
|
*/
|
||||||
@ -221,6 +225,10 @@ static int skel_close(FAR struct file *filep)
|
|||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: skel_read
|
* Name: skel_read
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Handle read from procfs file.
|
||||||
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static ssize_t skel_read(FAR struct file *filep, FAR char *buffer,
|
static ssize_t skel_read(FAR struct file *filep, FAR char *buffer,
|
||||||
@ -236,7 +244,51 @@ static ssize_t skel_read(FAR struct file *filep, FAR char *buffer,
|
|||||||
priv = (FAR struct skel_file_s *)filep->f_priv;
|
priv = (FAR struct skel_file_s *)filep->f_priv;
|
||||||
DEBUGASSERT(priv);
|
DEBUGASSERT(priv);
|
||||||
|
|
||||||
/* TODO: Provide the requested data */
|
/* TODO: Provide the requested data.
|
||||||
|
* Take into account current filep->f_pos and 'buflen'. The read could
|
||||||
|
* require several calls to skel_read().
|
||||||
|
*/
|
||||||
|
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
/* Update the file offset */
|
||||||
|
|
||||||
|
if (ret > 0)
|
||||||
|
{
|
||||||
|
filep->f_pos += ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: skel_write
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Handle write3 to procfs file.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/* TODO: Should not support skel_write if read-only */
|
||||||
|
static ssize_t skel_write(FAR struct file *filep, FAR const char *buffer,
|
||||||
|
size_t buflen)
|
||||||
|
{
|
||||||
|
FAR struct skel_file_s *priv;
|
||||||
|
ssize_t ret;
|
||||||
|
|
||||||
|
finfo("buffer=%p buflen=%d\n", buffer, (int)buflen);
|
||||||
|
|
||||||
|
/* Recover our private data from the struct file instance */
|
||||||
|
|
||||||
|
priv = (FAR struct skel_file_s *)filep->f_priv;
|
||||||
|
DEBUGASSERT(priv);
|
||||||
|
|
||||||
|
/* TODO: Verify that the write is within range */
|
||||||
|
|
||||||
|
/* TODO: Handle the write data as appropriate to function of file.
|
||||||
|
* Take into account current filep->f_pos and 'buflen' since the write
|
||||||
|
* may require several calls to skel_write().
|
||||||
|
*/
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
@ -317,8 +369,7 @@ static int skel_opendir(FAR const char *relpath, FAR struct fs_dirent_s *dir)
|
|||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO: Initialze context specific data */
|
/* TODO: Initialize context specific data */
|
||||||
|
|
||||||
|
|
||||||
/* Initialze base structure components */
|
/* Initialze base structure components */
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user