Merged nuttx/nuttx into master
This commit is contained in:
commit
063f86b6b2
41
COPYING
41
COPYING
@ -225,44 +225,3 @@ drivers/video/ov2640
|
||||
content of those tables and still retain this BSD license. I am guessing
|
||||
so, but I am not a copyright attorney so you should use this driver in
|
||||
products at your own risk.
|
||||
|
||||
apps/netutils/pppd
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This implementation of PPPD has a license that is mostly compatible the
|
||||
NuttX 3-clause BSD license, but includes a fourth clause that required
|
||||
acknowledgement of Mike Johnson/Mycal Labs if it is built into your
|
||||
product:
|
||||
|
||||
Copyright (C) 2000, Mycal Labs www.mycal.com
|
||||
Copyright (c) 2003, Mike Johnson, Mycal Labs, www.mycal.net
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. All advertising materials mentioning features or use of this software
|
||||
must display the following acknowledgement:
|
||||
This product includes software developed by Mike Johnson/Mycal Labs
|
||||
www.mycal.net.
|
||||
4. The name of the author may not be used to endorse or promote
|
||||
products derived from this software without specific prior
|
||||
written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
||||
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
@ -666,7 +666,7 @@ static void twi_startwrite(struct twi_dev_s *priv, struct i2c_msg_s *msg)
|
||||
|
||||
static void twi_startmessage(struct twi_dev_s *priv, struct i2c_msg_s *msg)
|
||||
{
|
||||
if ((msg->flags & I2C_M_READ) == 0)
|
||||
if ((msg->flags & I2C_M_READ) != 0)
|
||||
{
|
||||
twi_startread(priv, msg);
|
||||
}
|
||||
|
@ -771,7 +771,7 @@ static ssize_t smartfs_write(FAR struct file *filep, const char *buffer,
|
||||
if (ret < 0)
|
||||
{
|
||||
ferr("ERROR: Error %d writing sector %d data\n",
|
||||
et, sf->currsector);
|
||||
ret, sf->currsector);
|
||||
goto errout_with_semaphore;
|
||||
}
|
||||
|
||||
|
@ -76,24 +76,42 @@
|
||||
int file_ioctl(FAR struct file *filep, int req, unsigned long arg)
|
||||
{
|
||||
FAR struct inode *inode;
|
||||
int errcode;
|
||||
int ret;
|
||||
|
||||
/* Is a driver registered? Does it support the ioctl method? */
|
||||
DEBUGASSERT(filep != NULL);
|
||||
|
||||
/* Is a driver opened? */
|
||||
|
||||
inode = filep->f_inode;
|
||||
if (inode && inode->u.i_ops && inode->u.i_ops->ioctl)
|
||||
if (!inode)
|
||||
{
|
||||
/* Yes, then let it perform the ioctl */
|
||||
|
||||
ret = (int)inode->u.i_ops->ioctl(filep, req, arg);
|
||||
if (ret < 0)
|
||||
{
|
||||
set_errno(-ret);
|
||||
return ERROR;
|
||||
}
|
||||
errcode = EBADF;
|
||||
goto errout;
|
||||
}
|
||||
|
||||
return OK;
|
||||
/* Does the driver support the ioctl method? */
|
||||
|
||||
if (inode->u.i_ops == NULL || inode->u.i_ops->ioctl == NULL)
|
||||
{
|
||||
errcode = ENOTTY;
|
||||
goto errout;
|
||||
}
|
||||
|
||||
/* Yes on both accounts. Let the driver perform the ioctl command */
|
||||
|
||||
ret = (int)inode->u.i_ops->ioctl(filep, req, arg);
|
||||
if (ret < 0)
|
||||
{
|
||||
errcode = -ret;
|
||||
goto errout;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
errout:
|
||||
set_errno(errcode);
|
||||
return ERROR;
|
||||
}
|
||||
#endif /* CONFIG_NFILE_DESCRIPTORS > 0 */
|
||||
|
||||
@ -162,12 +180,17 @@ int ioctl(int fd, int req, unsigned long arg)
|
||||
filep = fs_getfilep(fd);
|
||||
if (!filep)
|
||||
{
|
||||
/* The errno value has already been set */
|
||||
/* Apparently, the fd does not correspond to any open file. In the
|
||||
* case of errors, the errno value has already been set by
|
||||
* fs_getfilep().
|
||||
*/
|
||||
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
/* Is a driver registered? Does it support the ioctl method? */
|
||||
/* Perform the file ioctl. If file_ioctl() fails, it will set the errno
|
||||
* value appropriately.
|
||||
*/
|
||||
|
||||
return file_ioctl(filep, req, arg);
|
||||
#else
|
||||
|
Loading…
Reference in New Issue
Block a user