fs: Make nx_vxxx and file_vxxx as internal functions
these functions are the implementation detail and then don't need expose to external Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com> Change-Id: Ief832391d5b42d1f1645907eb465631650490234
This commit is contained in:
parent
32708ab849
commit
fe96250c40
@ -47,8 +47,8 @@
|
|||||||
* or sink pipe file structures before each file_read() or file_write()
|
* or sink pipe file structures before each file_read() or file_write()
|
||||||
* operation to assure that the O_NONBLOCK is set correctly when the
|
* operation to assure that the O_NONBLOCK is set correctly when the
|
||||||
* pipe read or write operation is performed. This might be done with
|
* pipe read or write operation is performed. This might be done with
|
||||||
* file_vfcntl() (there is no file_fcntl(), yet) or directly into the
|
* file_fcntl() or directly into the source/sink file structure oflags
|
||||||
* source/sink file structure oflags mode settings.
|
* mode settings.
|
||||||
*
|
*
|
||||||
* This would require (1) the ability to lock each pipe individually,
|
* This would require (1) the ability to lock each pipe individually,
|
||||||
* setting the blocking mode for the source or sink pipe to match the
|
* setting the blocking mode for the source or sink pipe to match the
|
||||||
@ -549,7 +549,7 @@ static ssize_t pty_read(FAR struct file *filep, FAR char *buffer, size_t len)
|
|||||||
*
|
*
|
||||||
* REVISIT: Should not block if the oflags include O_NONBLOCK.
|
* REVISIT: Should not block if the oflags include O_NONBLOCK.
|
||||||
* How would we ripple the O_NONBLOCK characteristic to the
|
* How would we ripple the O_NONBLOCK characteristic to the
|
||||||
* contained source pipe? file_vfcntl()? Or FIONREAD? See the
|
* contained source pipe? file_fcntl()? Or FIONREAD? See the
|
||||||
* TODO comment at the top of this file.
|
* TODO comment at the top of this file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -602,7 +602,7 @@ static ssize_t pty_read(FAR struct file *filep, FAR char *buffer, size_t len)
|
|||||||
*
|
*
|
||||||
* REVISIT: Should not block if the oflags include O_NONBLOCK.
|
* REVISIT: Should not block if the oflags include O_NONBLOCK.
|
||||||
* How would we ripple the O_NONBLOCK characteristic to the
|
* How would we ripple the O_NONBLOCK characteristic to the
|
||||||
* contained source pipe? file_vfcntl()? Or FIONREAD? See the
|
* contained source pipe? file_fcntl()? Or FIONREAD? See the
|
||||||
* TODO comment at the top of this file.
|
* TODO comment at the top of this file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -670,7 +670,7 @@ static ssize_t pty_write(FAR struct file *filep,
|
|||||||
*
|
*
|
||||||
* REVISIT: Should not block if the oflags include O_NONBLOCK.
|
* REVISIT: Should not block if the oflags include O_NONBLOCK.
|
||||||
* How would we ripple the O_NONBLOCK characteristic to the
|
* How would we ripple the O_NONBLOCK characteristic to the
|
||||||
* contained sink pipe? file_vfcntl()? Or FIONSPACE? See the
|
* contained sink pipe? file_fcntl()? Or FIONSPACE? See the
|
||||||
* TODO comment at the top of this file.
|
* TODO comment at the top of this file.
|
||||||
*
|
*
|
||||||
* NOTE: The newline is not included in total number of bytes
|
* NOTE: The newline is not included in total number of bytes
|
||||||
@ -691,7 +691,7 @@ static ssize_t pty_write(FAR struct file *filep,
|
|||||||
*
|
*
|
||||||
* REVISIT: Should not block if the oflags include O_NONBLOCK.
|
* REVISIT: Should not block if the oflags include O_NONBLOCK.
|
||||||
* How would we ripple the O_NONBLOCK characteristic to the
|
* How would we ripple the O_NONBLOCK characteristic to the
|
||||||
* contained sink pipe? file_vfcntl()? Or FIONSPACe? See the
|
* contained sink pipe? file_fcntl()? Or FIONSPACe? See the
|
||||||
* TODO comment at the top of this file.
|
* TODO comment at the top of this file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -715,7 +715,7 @@ static ssize_t pty_write(FAR struct file *filep,
|
|||||||
*
|
*
|
||||||
* REVISIT: Should not block if the oflags include O_NONBLOCK.
|
* REVISIT: Should not block if the oflags include O_NONBLOCK.
|
||||||
* How would we ripple the O_NONBLOCK characteristic to the
|
* How would we ripple the O_NONBLOCK characteristic to the
|
||||||
* contained sink pipe? file_vfcntl()? Or FIONSPACE? See the
|
* contained sink pipe? file_fcntl()? Or FIONSPACE? See the
|
||||||
* TODO comment at the top of this file.
|
* TODO comment at the top of this file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -53,29 +53,14 @@
|
|||||||
#include "inode/inode.h"
|
#include "inode/inode.h"
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Functions
|
* Private Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: file_vfcntl
|
* Name: file_vfcntl
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Similar to the standard vfcntl function except that is accepts a struct
|
|
||||||
* struct file instance instead of a file descriptor.
|
|
||||||
*
|
|
||||||
* Input Parameters:
|
|
||||||
* filep - Instance for struct file for the opened file.
|
|
||||||
* cmd - Identifies the operation to be performed.
|
|
||||||
* ap - Variable argument following the command.
|
|
||||||
*
|
|
||||||
* Returned Value:
|
|
||||||
* The nature of the return value depends on the command. Non-negative
|
|
||||||
* values indicate success. Failures are reported as negated errno
|
|
||||||
* values.
|
|
||||||
*
|
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int file_vfcntl(FAR struct file *filep, int cmd, va_list ap)
|
static int file_vfcntl(FAR struct file *filep, int cmd, va_list ap)
|
||||||
{
|
{
|
||||||
int ret = -EINVAL;
|
int ret = -EINVAL;
|
||||||
|
|
||||||
@ -245,64 +230,10 @@ int file_vfcntl(FAR struct file *filep, int cmd, va_list ap)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: file_fcntl
|
* Name: nx_vfcntl
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Similar to the standard fcntl function except that is accepts a struct
|
|
||||||
* struct file instance instead of a file descriptor.
|
|
||||||
*
|
|
||||||
* Input Parameters:
|
|
||||||
* filep - Instance for struct file for the opened file.
|
|
||||||
* cmd - Identifies the operation to be performed. Command specific
|
|
||||||
* arguments may follow.
|
|
||||||
*
|
|
||||||
* Returned Value:
|
|
||||||
* The nature of the return value depends on the command. Non-negative
|
|
||||||
* values indicate success. Failures are reported as negated errno
|
|
||||||
* values.
|
|
||||||
*
|
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int file_fcntl(FAR struct file *filep, int cmd, ...)
|
static int nx_vfcntl(int fd, int cmd, va_list ap)
|
||||||
{
|
|
||||||
va_list ap;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
/* Setup to access the variable argument list */
|
|
||||||
|
|
||||||
va_start(ap, cmd);
|
|
||||||
|
|
||||||
/* Let file_vfcntl() do the real work. The errno is not set on
|
|
||||||
* failures.
|
|
||||||
*/
|
|
||||||
|
|
||||||
ret = file_vfcntl(filep, cmd, ap);
|
|
||||||
|
|
||||||
va_end(ap);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Name: nx_fcntl and nx_vfcntl
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* nx_fcntl() is similar to the standard 'fcntl' interface except that is
|
|
||||||
* not a cancellation point and it does not modify the errno variable.
|
|
||||||
*
|
|
||||||
* nx_vfcntl() is identical except that it accepts a va_list as an argument
|
|
||||||
* versus taking a variable length list of arguments.
|
|
||||||
*
|
|
||||||
* nx_fcntl() and nx_vfcntl are internal NuttX interface and should not be
|
|
||||||
* called from applications.
|
|
||||||
*
|
|
||||||
* Returned Value:
|
|
||||||
* Returns a non-negative number on success; A negated errno value is
|
|
||||||
* returned on any failure (see comments fcntl() for a list of appropriate
|
|
||||||
* errno values).
|
|
||||||
*
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
int nx_vfcntl(int fd, int cmd, va_list ap)
|
|
||||||
{
|
{
|
||||||
FAR struct file *filep;
|
FAR struct file *filep;
|
||||||
int ret;
|
int ret;
|
||||||
@ -350,6 +281,65 @@ int nx_vfcntl(int fd, int cmd, va_list ap)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Public Functions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: file_fcntl
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Similar to the standard fcntl function except that is accepts a struct
|
||||||
|
* struct file instance instead of a file descriptor.
|
||||||
|
*
|
||||||
|
* Input Parameters:
|
||||||
|
* filep - Instance for struct file for the opened file.
|
||||||
|
* cmd - Identifies the operation to be performed. Command specific
|
||||||
|
* arguments may follow.
|
||||||
|
*
|
||||||
|
* Returned Value:
|
||||||
|
* The nature of the return value depends on the command. Non-negative
|
||||||
|
* values indicate success. Failures are reported as negated errno
|
||||||
|
* values.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
int file_fcntl(FAR struct file *filep, int cmd, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
/* Setup to access the variable argument list */
|
||||||
|
|
||||||
|
va_start(ap, cmd);
|
||||||
|
|
||||||
|
/* Let file_vfcntl() do the real work. The errno is not set on
|
||||||
|
* failures.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ret = file_vfcntl(filep, cmd, ap);
|
||||||
|
|
||||||
|
va_end(ap);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: nx_fcntl
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* nx_fcntl() is similar to the standard 'fcntl' interface except that is
|
||||||
|
* not a cancellation point and it does not modify the errno variable.
|
||||||
|
*
|
||||||
|
* nx_fcntl() is an internal NuttX interface and should not be called
|
||||||
|
* from applications.
|
||||||
|
*
|
||||||
|
* Returned Value:
|
||||||
|
* Returns a non-negative number on success; A negated errno value is
|
||||||
|
* returned on any failure (see comments fcntl() for a list of appropriate
|
||||||
|
* errno values).
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
int nx_fcntl(int fd, int cmd, ...)
|
int nx_fcntl(int fd, int cmd, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
@ -55,25 +55,11 @@
|
|||||||
#include "inode/inode.h"
|
#include "inode/inode.h"
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Functions
|
* Private Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: file_ioctl and file_vioctl
|
* Name: file_vioctl
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Perform device specific operations.
|
|
||||||
*
|
|
||||||
* Input Parameters:
|
|
||||||
* file File structure instance
|
|
||||||
* req The ioctl command
|
|
||||||
* ap The argument of the ioctl cmd
|
|
||||||
*
|
|
||||||
* Returned Value:
|
|
||||||
* Returns a non-negative number on success; A negated errno value is
|
|
||||||
* returned on any failure (see comments ioctl() for a list of appropriate
|
|
||||||
* errno values).
|
|
||||||
*
|
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int file_vioctl(FAR struct file *filep, int req, va_list ap)
|
int file_vioctl(FAR struct file *filep, int req, va_list ap)
|
||||||
@ -102,38 +88,11 @@ int file_vioctl(FAR struct file *filep, int req, va_list ap)
|
|||||||
return inode->u.i_ops->ioctl(filep, req, va_arg(ap, unsigned long));
|
return inode->u.i_ops->ioctl(filep, req, va_arg(ap, unsigned long));
|
||||||
}
|
}
|
||||||
|
|
||||||
int file_ioctl(FAR struct file *filep, int req, ...)
|
|
||||||
{
|
|
||||||
va_list ap;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
/* Let file_vioctl() do the real work. */
|
|
||||||
|
|
||||||
va_start(ap, req);
|
|
||||||
ret = file_vioctl(filep, req, ap);
|
|
||||||
va_end(ap);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: nx_ioctl and nx_vioctl
|
* Name: nx_vioctl
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* nx_ioctl() is similar to the standard 'ioctl' interface except that is
|
|
||||||
* not a cancellation point and it does not modify the errno variable.
|
|
||||||
*
|
|
||||||
* nx_ioctl() is an internal NuttX interface and should not be called from
|
|
||||||
* applications.
|
|
||||||
*
|
|
||||||
* Returned Value:
|
|
||||||
* Returns a non-negative number on success; A negated errno value is
|
|
||||||
* returned on any failure (see comments ioctl() for a list of appropriate
|
|
||||||
* errno values).
|
|
||||||
*
|
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int nx_vioctl(int fd, int req, va_list ap)
|
static int nx_vioctl(int fd, int req, va_list ap)
|
||||||
{
|
{
|
||||||
FAR struct file *filep;
|
FAR struct file *filep;
|
||||||
FAR int *arg;
|
FAR int *arg;
|
||||||
@ -206,6 +165,59 @@ int nx_vioctl(int fd, int req, va_list ap)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Public Functions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: file_ioctl
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Perform device specific operations.
|
||||||
|
*
|
||||||
|
* Input Parameters:
|
||||||
|
* file File structure instance
|
||||||
|
* req The ioctl command
|
||||||
|
* ap The argument of the ioctl cmd
|
||||||
|
*
|
||||||
|
* Returned Value:
|
||||||
|
* Returns a non-negative number on success; A negated errno value is
|
||||||
|
* returned on any failure (see comments ioctl() for a list of appropriate
|
||||||
|
* errno values).
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
int file_ioctl(FAR struct file *filep, int req, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
/* Let file_vioctl() do the real work. */
|
||||||
|
|
||||||
|
va_start(ap, req);
|
||||||
|
ret = file_vioctl(filep, req, ap);
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: nx_ioctl
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* nx_ioctl() is similar to the standard 'ioctl' interface except that is
|
||||||
|
* not a cancellation point and it does not modify the errno variable.
|
||||||
|
*
|
||||||
|
* nx_ioctl() is an internal NuttX interface and should not be called from
|
||||||
|
* applications.
|
||||||
|
*
|
||||||
|
* Returned Value:
|
||||||
|
* Returns a non-negative number on success; A negated errno value is
|
||||||
|
* returned on any failure (see comments ioctl() for a list of appropriate
|
||||||
|
* errno values).
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
int nx_ioctl(int fd, int req, ...)
|
int nx_ioctl(int fd, int req, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
138
fs/vfs/fs_open.c
138
fs/vfs/fs_open.c
@ -55,48 +55,15 @@
|
|||||||
#include "driver/driver.h"
|
#include "driver/driver.h"
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Functions
|
* Private Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Name: inode_checkflags
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Check if the access described by 'oflags' is supported on 'inode'
|
|
||||||
*
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
int inode_checkflags(FAR struct inode *inode, int oflags)
|
|
||||||
{
|
|
||||||
if (((oflags & O_RDOK) != 0 && !inode->u.i_ops->read) ||
|
|
||||||
((oflags & O_WROK) != 0 && !inode->u.i_ops->write))
|
|
||||||
{
|
|
||||||
return -EACCES;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return OK;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: file_vopen
|
* Name: file_vopen
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* file_vopen() is identical to 'file_open' except that it accepts va_list
|
|
||||||
* as an argument versus taking a variable length list of arguments.
|
|
||||||
*
|
|
||||||
* file_vopen() is an internal NuttX interface and should not be called
|
|
||||||
* from applications.
|
|
||||||
*
|
|
||||||
* Returned Value:
|
|
||||||
* Zero (OK) is returned on success. On failure, a negated errno value is
|
|
||||||
* returned.
|
|
||||||
*
|
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int file_vopen(FAR struct file *filep,
|
static int file_vopen(FAR struct file *filep,
|
||||||
FAR const char *path, int oflags, va_list ap)
|
FAR const char *path, int oflags, va_list ap)
|
||||||
{
|
{
|
||||||
struct inode_search_s desc;
|
struct inode_search_s desc;
|
||||||
FAR struct inode *inode;
|
FAR struct inode *inode;
|
||||||
@ -236,6 +203,62 @@ errout_with_search:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: nx_vopen
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
static int nx_vopen(FAR const char *path, int oflags, va_list ap)
|
||||||
|
{
|
||||||
|
struct file filep;
|
||||||
|
int ret;
|
||||||
|
int fd;
|
||||||
|
|
||||||
|
/* Let file_vopen() do all of the work */
|
||||||
|
|
||||||
|
ret = file_vopen(&filep, path, oflags, ap);
|
||||||
|
if (ret < 0)
|
||||||
|
{
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Allocate a new file descriptor for the inode */
|
||||||
|
|
||||||
|
fd = files_allocate(filep.f_inode, filep.f_oflags,
|
||||||
|
filep.f_pos, filep.f_priv, 0);
|
||||||
|
if (fd < 0)
|
||||||
|
{
|
||||||
|
file_close(&filep);
|
||||||
|
return fd;
|
||||||
|
}
|
||||||
|
|
||||||
|
return fd;
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Public Functions
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: inode_checkflags
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Check if the access described by 'oflags' is supported on 'inode'
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
int inode_checkflags(FAR struct inode *inode, int oflags)
|
||||||
|
{
|
||||||
|
if (((oflags & O_RDOK) != 0 && !inode->u.i_ops->read) ||
|
||||||
|
((oflags & O_WROK) != 0 && !inode->u.i_ops->write))
|
||||||
|
{
|
||||||
|
return -EACCES;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: file_open
|
* Name: file_open
|
||||||
*
|
*
|
||||||
@ -269,49 +292,6 @@ int file_open(FAR struct file *filep, FAR const char *path, int oflags, ...)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Name: nx_vopen
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* nx_vopen() is identical to 'nx_open' except that it accepts a va_list
|
|
||||||
* as an argument versus taking a variable length list of arguments.
|
|
||||||
*
|
|
||||||
* nx_vopen() is an internal NuttX interface and should not be called from
|
|
||||||
* applications.
|
|
||||||
*
|
|
||||||
* Returned Value:
|
|
||||||
* The new file descriptor is returned on success; a negated errno value is
|
|
||||||
* returned on any failure.
|
|
||||||
*
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
int nx_vopen(FAR const char *path, int oflags, va_list ap)
|
|
||||||
{
|
|
||||||
struct file filep;
|
|
||||||
int ret;
|
|
||||||
int fd;
|
|
||||||
|
|
||||||
/* Let file_vopen() do all of the work */
|
|
||||||
|
|
||||||
ret = file_vopen(&filep, path, oflags, ap);
|
|
||||||
if (ret < 0)
|
|
||||||
{
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Allocate a new file descriptor for the inode */
|
|
||||||
|
|
||||||
fd = files_allocate(filep.f_inode, filep.f_oflags,
|
|
||||||
filep.f_pos, filep.f_priv, 0);
|
|
||||||
if (fd < 0)
|
|
||||||
{
|
|
||||||
file_close(&filep);
|
|
||||||
return fd;
|
|
||||||
}
|
|
||||||
|
|
||||||
return fd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: nx_open
|
* Name: nx_open
|
||||||
*
|
*
|
||||||
|
@ -835,22 +835,17 @@ int nx_dup2(int fd1, int fd2);
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int file_vopen(FAR struct file *filep,
|
|
||||||
FAR const char *path, int oflags, va_list ap);
|
|
||||||
int file_open(FAR struct file *filep, FAR const char *path, int oflags, ...);
|
int file_open(FAR struct file *filep, FAR const char *path, int oflags, ...);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: nx_open and nx_vopen
|
* Name: nx_open
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* nx_open() is similar to the standard 'open' interface except that is is
|
* nx_open() is similar to the standard 'open' interface except that is is
|
||||||
* not a cancellation point and it does not modify the errno variable.
|
* not a cancellation point and it does not modify the errno variable.
|
||||||
*
|
*
|
||||||
* nx_vopen() is identical except that it accepts a va_list as an argument
|
* nx_open() is an internal NuttX interface and should not be called
|
||||||
* versus taking a variable length list of arguments.
|
* from applications.
|
||||||
*
|
|
||||||
* nx_open() and nx_vopen are internal NuttX interface and should not be
|
|
||||||
* called from applications.
|
|
||||||
*
|
*
|
||||||
* Returned Value:
|
* Returned Value:
|
||||||
* The new file descriptor is returned on success; a negated errno value is
|
* The new file descriptor is returned on success; a negated errno value is
|
||||||
@ -858,7 +853,6 @@ int file_open(FAR struct file *filep, FAR const char *path, int oflags, ...);
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int nx_vopen(FAR const char *path, int oflags, va_list ap);
|
|
||||||
int nx_open(FAR const char *path, int oflags, ...);
|
int nx_open(FAR const char *path, int oflags, ...);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -1190,7 +1184,7 @@ int file_truncate(FAR struct file *filep, off_t length);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: file_ioctl and file_vioctl
|
* Name: file_ioctl
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Perform device specific operations.
|
* Perform device specific operations.
|
||||||
@ -1207,11 +1201,10 @@ int file_truncate(FAR struct file *filep, off_t length);
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int file_vioctl(FAR struct file *filep, int req, va_list ap);
|
|
||||||
int file_ioctl(FAR struct file *filep, int req, ...);
|
int file_ioctl(FAR struct file *filep, int req, ...);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: nx_ioctl and nx_vioctl
|
* Name: nx_ioctl
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* nx_ioctl() is similar to the standard 'ioctl' interface except that is
|
* nx_ioctl() is similar to the standard 'ioctl' interface except that is
|
||||||
@ -1227,30 +1220,8 @@ int file_ioctl(FAR struct file *filep, int req, ...);
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int nx_vioctl(int fd, int req, va_list ap);
|
|
||||||
int nx_ioctl(int fd, int req, ...);
|
int nx_ioctl(int fd, int req, ...);
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Name: file_vfcntl
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Similar to the standard vfcntl function except that is accepts a struct
|
|
||||||
* struct file instance instead of a file descriptor.
|
|
||||||
*
|
|
||||||
* Input Parameters:
|
|
||||||
* filep - Instance for struct file for the opened file.
|
|
||||||
* cmd - Identifies the operation to be performed.
|
|
||||||
* ap - Variable argument following the command.
|
|
||||||
*
|
|
||||||
* Returned Value:
|
|
||||||
* The nature of the return value depends on the command. Non-negative
|
|
||||||
* values indicate success. Failures are reported as negated errno
|
|
||||||
* values.
|
|
||||||
*
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
int file_vfcntl(FAR struct file *filep, int cmd, va_list ap);
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: file_fcntl
|
* Name: file_fcntl
|
||||||
*
|
*
|
||||||
@ -1273,17 +1244,14 @@ int file_vfcntl(FAR struct file *filep, int cmd, va_list ap);
|
|||||||
int file_fcntl(FAR struct file *filep, int cmd, ...);
|
int file_fcntl(FAR struct file *filep, int cmd, ...);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: nx_fcntl and nx_vfcntl
|
* Name: nx_fcntl
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* nx_fcntl() is similar to the standard 'fcntl' interface except that is
|
* nx_fcntl() is similar to the standard 'fcntl' interface except that is
|
||||||
* not a cancellation point and it does not modify the errno variable.
|
* not a cancellation point and it does not modify the errno variable.
|
||||||
*
|
*
|
||||||
* nx_vfcntl() is identical except that it accepts a va_list as an argument
|
* nx_fcntl() is an internal NuttX interface and should not be called
|
||||||
* versus taking a variable length list of arguments.
|
* from applications.
|
||||||
*
|
|
||||||
* nx_fcntl() and nx_vfcntl are internal NuttX interface and should not be
|
|
||||||
* called from applications.
|
|
||||||
*
|
*
|
||||||
* Returned Value:
|
* Returned Value:
|
||||||
* Returns a non-negative number on success; A negated errno value is
|
* Returns a non-negative number on success; A negated errno value is
|
||||||
@ -1292,7 +1260,6 @@ int file_fcntl(FAR struct file *filep, int cmd, ...);
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int nx_vfcntl(int fd, int cmd, va_list ap);
|
|
||||||
int nx_fcntl(int fd, int cmd, ...);
|
int nx_fcntl(int fd, int cmd, ...);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
Loading…
Reference in New Issue
Block a user