Commit Graph

4001 Commits

Author SHA1 Message Date
Gregory Nutt
f58e7976df net/procfs: Add support to provide MLD stats at /proc/net/mld. net/mld: Fix a couple more bugs found in further MLD testing. 2018-11-06 10:42:53 -06:00
Gregory Nutt
33ed27ae65 Squashed commit of the following:
net/mld: Checksum calculation needs to know the full size of the IPv6 header, including the size of the extension headers.  The payload size in the IPv64 header must include the extension headers (not considered part of the header in this case).  Fixes a few additional errors in size, endian-ness and checksum calculations.  Wireshark now reports the the outgoing Report has a good checksum.

    net/mld/mld_query.c:  Add a cast to assure that the left shift does not overflow.
2018-11-05 08:56:07 -06:00
Gregory Nutt
c6156818b0 net/mld: Fix some compile errors fill debug info is enabled. Fix some errors in formatting the Listerner report. Still has a checksum error. 2018-11-04 18:18:14 -06:00
Gregory Nutt
9a75a14800 net/mld: Implement MLDv1 compatibility mode. This completes coding of MLD. MLD is, howeer, still completely untested. 2018-11-04 14:07:27 -06:00
Gregory Nutt
b1a61834d9 net/mld: Review and update all MLD message receipt logic. Also ripple changs that are, hopefully, improvements back to IGMP. 2018-11-04 10:57:21 -06:00
Gregory Nutt
1c15aa3b2d Squashed commit of the following:
net/mld:  More updates from comparison with roughly leveraged code and the MDL RFCs 2710 and 3810.

    net/mld:  More updated from comparison with roughly leveraged code and the MDL RFCs 2710 and 3810.

    net/mld:  Beginning comparison with roughly leveraged code and the MDL RFCs 2710 and 3810.
2018-11-03 13:45:33 -06:00
Gregory Nutt
46cf69c93e include/nuttx/net/netdev.h: Fix a copy-paste error in previous commit. 2018-11-03 07:15:37 -06:00
Gregory Nutt
863f617262 net/igmp and net/mld: Fix problem when both IGMP and MLD are enabled. The cannot share the same group list in the network devices structure. 2018-11-03 07:06:30 -06:00
Gregory Nutt
6c0ab0e077 Squashed commit of the following:
include/nuttx/net/ipv6ext.h:  Fix some terminology:  Hop-by-hop, not Hop-to-hop or Hop2hop.

    net/devif/ipv6_input.c and net/icmpv6/icmpv6_input.c:  Add logic to skiip over the variable number of IPv6 extension headers that may be present between the IPv6 header and the transport layer header.  The extension headers are simply ignored.  This is necessary because with MLD, certain incoming messages may have, at a mimimum, a Router Alert Hop-by-hop extension header.

    net/inet/ipv6_setsockopt.c:  Implement the IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP socket options.
2018-11-02 12:06:57 -06:00
Gregory Nutt
9f2cb42918 include/nuttx/net/ipv6ext.h: Create header file with all of the definitions of IPv6 extension headers that I could find. net/mld/mld_send.c: Correct the size and format of the Hop-to-hop, Router alert extension header. 2018-11-01 17:51:47 -06:00
Gregory Nutt
5b7ef856a0 Squashed commit of the following:
net/mld:  The MLD logic now compiles and is much less toxic.  It still is not a proper MLD implementation:  (1) It is basically a port of IGMP, tweaked to work with IPv6 and ICMPv6 MLD messages, (2) it needs a proper analysis and comparison with RFC 3810, and (3) it is completely untested.  For this reason, it will remain EXPERIMENTAL for some time.
    net/mld:  Add some missing macros, more fixes related to IPv6 vs IPv4 types,
    net/mld:  More compilation cleaning.  Most fixups for IPv6 vs IPv4 types.
    net/mld:  Hook crudely converted .c files into build system and resolve a few of the many, many compilation/design problems.
    net/mld:  Add support for MLD statistics.
    net/mld:  Hook in MLD poll and packet transmission logic.
    net/mld:  Change references to IPv4 definitions to IPv6 definitions; Remove mld_input() since MLD piggybacks on ICMPv6 input.  Add functions to catch MLD messages dispatched by ICMPv6 input logic.
    net/mld:  As a starting point, copy all net/igmp/*.c files to net/mld/. and change all occurrences of igmp (or IGMP) to mld (or MLD).
    net/mld:  More compilation cleaning.  Most fixups for IPv6 vs IPv4 types.
    net/mld:  Hook crudely converted .c files into build system and resolve a few of the many, many compilation/design problems.
    net/mld:  Add support for MLD statistics.
    net/mld:  Hook in MLD poll and packet transmission logic.
    net/mld:  Change references to IPv4 definitions to IPv6 definitions; Remove mld_input() since MLD piggybacks on ICMPv6 input.  Add functions to catch MLD messages dispatched by ICMPv6 input logic.
    net/mld:  As a starting point, copy all net/igmp/*.c files to net/mld/. and change all occurrences of igmp (or IGMP) to mld (or MLD).
2018-11-01 15:19:47 -06:00
Gregory Nutt
933d38a209 include/nuttx/net/igmp.h: Remove bogus support for IPv6 IGMP. There is no such thing. 2018-11-01 08:53:48 -06:00
Gregory Nutt
0330743a9d net/inet: Add framework to support IPv4 and IPv6 protocol socket options (i.e., SOL_IP and SOL_IP6). This is build framework only (not actual socket options are yet handled). Handling of these socket options is a necessary step on the way to future ICMPv6 MLD support. 2018-10-31 15:59:05 -06:00
Gregory Nutt
6d93658ff8 Add new configuratin CONFIG_NET_MCASTGROUP. This option is selected automatically if either CONFIG_NET_IGMP or CONFIG_NET_MLD are selected. Most conditional logic based on CONFIG_NET_IGMP replaced with conditioning on CONFIG_NET_MCASTGROUP. 2018-10-31 15:03:51 -06:00
Gregory Nutt
dde1e89b8c net/mld: Add basic build structure for Multicast Listener Discovery (MLD). No real MLD logic yet. Only a few hooks to capture and dispatch MLD ICMPv6 packets. 2018-10-31 14:10:19 -06:00
Gregory Nutt
56415d8fa7 include/nuttx/net/mld.h: Add some missing header file inclusions. 2018-10-31 11:32:43 -06:00
Gregory Nutt
e192c9fa3d include/nuttx/net/mld.h: Add MLD header file based on RFC2710 and RFC3810. 2018-10-31 11:27:57 -06:00
Gregory Nutt
9f754ed1dc include/sys/sockio.h, net/netdev/netdev_ioctl.c: Fix a compile error introducted with commit 34db6d1433. That commit added the semi-standard ip_msfilter structure to netinet/in.h. Howver, there was a non-standard version of that structure in sys/sockio.h. This commit removes the non-standard version of struct ip_msfilter and adapts the IOCTL and device lookup logic in net/netdev to work with the new, semi-standard version in netinet/in.h. 2018-10-29 06:50:47 -06:00
Alan Carvalho de Assis
9689448d2a drivers/sensors/mlx90614.c: Add support for the Infrared Thermometer MLX90614 2018-10-28 15:58:14 -06:00
Gregory Nutt
34db6d1433 include/netinet/in.h: Add other definitions required by OpenGroup.org. Correct some typos. 2018-10-28 14:23:04 -06:00
Gregory Nutt
40f56a8a2f include/netinet/in.h: Add IPv4 SOL_IP socket options for symmetry with IPv6 definitions added in a previous commit. None of the socket options have been implemented! 2018-10-28 14:03:57 -06:00
Gregory Nutt
de107c8b98 include/netinet/in.h: Per OpenGroup.org, type of sin_port in struct sockaddr_in must be in_port_t vs uint16_t. NOTE: in_port_t is typdef'ed as uint16_t anyway. Plus additional cosmetic changes for things like long lines. 2018-10-28 12:35:22 -06:00
Gregory Nutt
11cc274eef Trivial, cosmetic changes from review of last PR. 2018-10-28 06:55:20 -06:00
Alan Carvalho de Assis
ea1689409f libs/libc/misc/lib_crc8ccitt.c: Adds implementation of CRC8-CCITT. 2018-10-27 16:29:32 -06:00
Gregory Nutt
bbd8cfbfb5 include/sys/socket.h: With increased size of struct sockaddr_in6 of commit 55f31f03f9, the size of struct sockaddr_storage in include/sys/socket.h must also be increase so that it can contain the new, larger sockaddr_in6. 2018-10-27 14:10:46 -06:00
Gregory Nutt
dcc081831e Trivial, cosmetic changes from review of last PR. 2018-10-27 13:47:22 -06:00
Anthony Merlino
55f31f03f9 Merged in antmerlino/nuttx/add-ipv6-options (pull request #741)
Adds definitions for IPPROTO_IPV6 socket options to netinet/in.h Adds missing fields to sockaddr_in6.  Adds struct ipv6-mreq.

These changes all follow the opengroup standard for netinet/in.h

Approved-by: GregoryN <gnutt@nuttx.org>
2018-10-27 19:32:25 +00:00
Anthony Merlino
1b18f10bee Merged in antmerlino/nuttx/net-if-externC-fix (pull request #740)
Adds extern "C" guard in include/net/if.h

Approved-by: GregoryN <gnutt@nuttx.org>
2018-10-27 18:13:02 +00:00
Gregory Nutt
a85f0e4cd5 networking: Update some comments to correct the naming used for the link layer. 2018-10-20 06:35:39 -06:00
Daniel P. Carvalho
3abe871a80 drivers/sensors/ina226.c: Add INA226 device driver. 2018-10-19 09:04:56 -06:00
Gregory Nutt
294456fa20 fs/spiffs: Add logic to dump the logical context of the FLASH. 2018-09-28 11:23:42 -06:00
Gregory Nutt
1273f727c0 File System IOCTLs: Three new IOCTLS were added for SPIFFS, two of which were duplicates. 2018-09-27 12:25:23 -06:00
Gregory Nutt
3b1cc69d68 include/nutt: Fix definitions used to access OS functions within the libraries. In the FLAT build, we must always set the errno and/or create cancellation points because the same library functions are used within the OS as are used by applications. This could cause issues for the OS but corrects some problems at the user interface.
Noted by Federico Braghiroli in Bitbucket issue 121.
2018-09-26 06:58:08 -06:00
Gregory Nutt
ec498d2660 This commit brings in an inital port of the SPIFFS flash file system into NuttX. The file system is still untested at this point (and subject to some additional review). It is, however, marked EXPERIMENTAL should this should not cause a problem for anyone.
Squashed commit of the following:

    fs/spiffs:  Fix last compilation issue.  Now compiles without error.  It is still not quite ready for testing as there is additional code review that must be be performed.  It is now marked as EXPERIMENTAL so that it can be brought onto the master branch with little risk.

    fs/spiffs:  Remove some dead code.

    fs/spiffs:  Weak start of analysis of spiffs_nucleus.c.  Renamed to spiffs_core.c

    fs/spiffs:  Rename spiffs_nucleus.c to spiffs_core.c

    fs/spiffs:  Remove spiffs_config.h.  All configuration settings are now available in the SPIFFS Kconfig options.

    fs/spiffs:  Finished review, update, and repartitioning of spiffs_check.c.  Added spiffs_check.h.

    fs/spiffs:  Finished review, update, and repartitioning of spiffs_cache.c.  Added spiffs_cache.h.

    fs/spiffs:  Clean up some defines used in debug output statements.

    fs/spiffs:  Finished review, update, and repartitioning of spiffs_gc.c.  Added spiffs_gc.h.

    fs/spiffs:  Now that VFS interface is completed, I have begun the long march of repartitioning the remaining functionality, reviewing logic, identifying dead code, and cleaning up loose ends.

    fs/spiffs:  Initial integration of MTD interface, replacing the SPIFFS native flash interface.  Lots of open issues such as the use of pages vs. blocks vs. erase blocks and units of addresses, offsets, and lengths that are passed in function calls.  Remove SPIFFS_USE_MAGIC support.  That option (which default to OFF anyway), wrote a magic value at the beginning of every sector and support verifiable identification of the file system.  It was not being and used and removing it makes life simpler.

    fs/spiffs:  Remove semaphore lock on the file object structure.  Ultimately, the file access must modify the volume and access the volume structue which also has a exclusivity lock.  So use of the volume lock alone should be sufficient.

    Integrated the SPIFFS rename logic into the NuttX VFS.  Removed non-standard application calls or convert them to IOCTL commands.  These were converted to IOCTL commands:  (1) integrity check, (2) garbage collection, and (3) format flash.  These were removed:  (1) Integrity check callback.  These provided a lot of good information about the state of the file system, but such callbacks are not compatible with a POSIX compliant file system.  (2) Index maps.  The index maps were a performance improvement feature.  The user could provide the memory and request that a region of a a file use that memory for improved lookup performance when accessing parts of the file.  The fallback is the less performance lookup by traversing the FLASH memory.  (3) Removed the quick garbage collection interface (the code is still used internally).  Only the full garbage collection is available to the user application via IOCTL.

    configs/sim/spiffs:  A simulator configuration to use for testing SPIFFS.

    fs/spiffs:  Integrate SPIFFS logic into NuttX VFS bind() and unbind() methods.

    fs/mount/fs_mount.c:  Add SPIFFS to the list of drivers that require MTD vs block drivers.

    fs/spiffs:  Trivial changes, mostly from analysis of how to integrate the rename() VFS method.

    fs/spiffs:  Connect NuttX VFS unlink method to the SPIFFS_remove() function.  Lots of name-changing.

    fs/spiffs:  Remove non-standard errno support.  Remove bogus SPIFFS_LOCK() and SPIFFS_UNLOCK() macros.

    fs/spiffs:  Add NuttX VFS implementation for statfs() method.  Clean up some of the accumulating compilation problems.

    fs/spiffs:  Add stat(), truncate() methods.  Dummy out unsupport mkdir() and rmdir() methods.

    fs/spiffs:  Replace some of the custom error numbers with standard error numbers.

    fs/spiffs:  Hooks read(), write(), fstat(), ioctl(), opendir(), closedir(), rewindif(), and readdir() into the NuttX VFS.

    fs/spiffs:  Beginning the organization to work with the NuttX VFS.  Lots of things are get broken!

    fs/spiffs:  Add spiffs.c which will be the interface between SPIFFS and NuttX.  No very close at present, however.

    fs/spiffs:  Clean up some compile problems introduced by coding standard changes.

    fs/spiffs:  A little closer to NuttX coding standard.

    fs/spiffs:  Ran tools/indent.sh against all files.  Closer to NuttX coding standard, but needs a lot more effort to be fully compliant.

    fs/spiffs:  This commit brings in version 0.3.7 of Peter Anderson's SPIFFS.  The initial commit includes the core FS files (with some definitions destributed to their correct header files) and hooks into the build system.
2018-09-24 18:05:09 -06:00
Gregory Nutt
0939fd479f include/sys/socket.h: Renumber the socket types. They must begin at 1, not zero. Socket type zero has a special meaning for some interfaces. For example, getaddrinfo() uses a socket type of zero to many any type of socket. The is no standard name for the any-type-socket, but macOS uses SOCK_UNSPEC. NuttX will do the same. Issue noted by Anthony Merlino. 2018-09-24 14:58:59 -06:00
Gregory Nutt
992b293122 Squashed commit of the following:
fs/driver and fs/mount:  Add mount() support for file systems that require MTD drivers (vs. block drivers).
    fs/drivers:  Add support for named MTD drivers in the psuedo file system.  This will, eventually, allow us to mount file systems that need MTD drivers without having to fake an intervening block driver.
2018-09-22 14:20:18 -06:00
Gregory Nutt
dec7ecbd56 net/tcp/tcp_recvwindow.c: In order to receive data we must not only have IOBs available, but we must also have at least one IOB chain qentry available. Otherwise, we will advertise that we an buffer a lot of data when, in fact, we cannot. This is an expermental fix to a performance problem noted by Masayuki Ishikawa. 2018-09-22 09:33:29 -06:00
Gregory Nutt
2c0a0aef9f arch/arm/src/stm32f7: Remove adhoc PM interfaces and add CONFIG_PM serial suspend. 2018-09-21 06:44:23 -06:00
EunBong Song
0f18e8cc32 Merged in ebsong/nuttx (pull request #722)
Pull request for mtd/progmem refactoring.

* mtd/progmem: change up_progmem_npages to up_progmem_neraseblocks

    page is a unit for read/write operation.
    eraseblock is a unit for erase operation.
    up_progmem_npages is a little bit confusing because it returns number of
    erase blocks in flash memory. This patch changes up_progmem_npages to
    up_progmem_neraseblocks. There is no logical change.

    Signed-off-by: EunBong Song <eunb.song@samsung.com>

* mtd/progmem: up_progmem_erasesize.

    Change argument name to be more readable.

    Signed-off-by: EunBong Song <eunb.song@samsung.com>

* mtd/progmem: up_progmem_eraseblock

    Change up_progmem_erasepage to up_progmem_eraseblock.
    eraseblock is more readable name than erasepage.

    Signed-off-by: EunBong Song <eunb.song@samsung.com>

* mtd/progmem: change up_progmem_eraseblock's return value.

    up_progmem_eraseblock erase a block. so it's better to return the erase block
    size than page size.

    Signed-off-by: EunBong Song <eunb.song@samsung.com>

* arm/cortex-r : fix wrong cp15_flash_dcache.

    change mcrne to mcr for unconditional dcache.

    Signed-off-by: sungduk.cho <sungduk.cho@samsung.com>

Approved-by: GregoryN <gnutt@nuttx.org>
2018-09-21 03:18:38 +00:00
Gregory Nutt
68d4c1d4ed C library: Add some new functions defined in POSIX.1-2017: stpncpy(), strsignal(), psignal(), psiginfo(). 2018-09-17 13:55:33 -06:00
Gregory Nutt
94f26c0220 fs/inode/fs_fileclose.c: Move file_close() a separate file. It no longer makes since for it to cohabitate with file_detach(). 2018-09-15 13:19:14 -06:00
Gregory Nutt
3a4984a40b Rename file_close_detached() to juse file_close() for better consistency in naming. 2018-09-15 13:04:56 -06:00
Gregory Nutt
5a0c6547d9 include/nuttx/fs/fs.h: Fix some backward paramters in a new macro definition. 2018-09-15 11:01:26 -06:00
Gregory Nutt
a7fd58c4db Squashed commit of the following:
many locations:  Change occurences of open() followed by file_detach() to file_open().  Change most non-controversion calls to open() to nx_open().

    fs/inode/fs_fileopen.c:  Flesh out file_open() with some interim, placeholder logic.

    fs/inode/fs_fileopen.c:  Add a framework for a file_open() implementation (no real logic in place yet).

    fs/vfs/fs_open.c:  Add nx_open() which is the same as open() except that it does not create a cancellation point nor does it modify the errno variable.
2018-09-15 10:49:41 -06:00
Gregory Nutt
9546481054 Fix some typographical errors. 2018-09-14 06:55:45 -06:00
Gregory Nutt
b3f0aab00a Squashed commit of the following:
sched/wqueue/kwork_notifier.c:  Redesign some data structures.  struct works_s must appear at the beginning of the notifier entry structure.  That is because it contains the work queue indices.  This solves a harfault issue.

    net/tcp/tcp_netpoll.c:  tcp_iob_work() needs to free the allocated argument when it is finished.

    net/tcp/tcp_send_buffered.c:  Extend psock_tcp_cansend() so that it also requires that at least on IOB is also avaialble.

    mm/iob:  iob_navail() was returning the number of free IOB chain queue entries, not the number of free IOBs.  Completely misnamed.

    net/tcp/tcp_netpoll.c:  Add logic to receive notifications when IOBs are freed (Needs CONFIG_NET_TCP_WRITE_BUFFERS and CONFIG_IOB_NOTIFIER).  At present, does nothing because the logic in in psock_tcp_cansend() does not check for the availability of IOBs.  That will change.
2018-09-12 08:57:06 -06:00
Gregory Nutt
76eec53e4f mm/iob: iob_navail() was returning the number of free IOB chain queue entries, not the number of free IOBs. Completely misnamed. 2018-09-12 06:40:18 -06:00
Gregory Nutt
11a635dcb3 mm/iob: IOB free notifier should accept the work queue ID as a paramter. The notification may need to run on either the high- or low- priority work queue. sched/work: Change the default priority of the low-priority work queue to 100. 2018-09-11 08:49:39 -06:00
Gregory Nutt
af0ee3c8f7 sched/wqueue: Add an option to work queue notifier so that the notification can occur on different work queues. 2018-09-11 07:22:23 -06:00
Gregory Nutt
9d3148406c Signals were not a good choice of IPC to implement the poll function for several reasons: In order to handle the asynchrnous poll-related event, a substantial amount of state information is needed. Signals are only capable of passing minimal amounts of data. There are also complexities with performing kernel space signal handlers in kernel space code that is better to avoid. So, instead of signals, the equivalent logic was converted to run via a callback that executes on the high-priority work queue.
Squashed commit of the following:

    Fix up some final compile isses.

    net/netdev:  Convert the network down notification logic to use the new wqueue-based notification factility.

    net/udp:  Convert the UDP readahead notification logic to use the new wqueue-based notification factility.

    net/tcp:  Convert the TCP readahead notification logic to use the new wqueue-based notification factility.

    mm/iob:  Convert the IOB notification logic to use the new wqueue-based notification factility.

    sched/wqueue:  Signals are not good IPCs to support the target poll functionality for several reasons including the amount of data that can be passed with a signal and in the fact that in protected and kernel modes, user threads executing signal handlers in protected, kernel memory is problematic.  Instead, convert the same logic to perform the notifications via function callback on the high priority work queue.
2018-09-09 15:01:44 -06:00
Gregory Nutt
20814acad2 sched/signal: In signal notification facility, use sigqueue() to notify vs. kill(). With sigqueue, we can pass more info (but still not enough). 2018-09-09 11:57:25 -06:00
Gregory Nutt
32e3e51678 net/netdev: Add signal notification for the case where the network goes down. 2018-09-09 10:39:25 -06:00
Gregory Nutt
fc127fd297 sched/signal: Add a generic signal notification facility. Modify the custom IOB available notifier so that it is now just a wrapper around this generic signal notification. This generic signal notification faility will, eventually, be used to support network polling.
Squashed commit of the following:

    mm/iob:  The IOB available notifier is now just a wrapper around the common signal notifier.

    sched/signal:  Add a generic signal notification facility.

    sched/signal/sig_evthread.c:  More trivial naming changes.

    sched/signal:  Rename nxsig_notification() to nxsig_evthread() to make forthcoming naming additions more consistent.
2018-09-09 08:32:37 -06:00
Gregory Nutt
bba8541ad6 mm/iob: Add an IOB notifier that will send a signal to any registered threads that want to be notified when an IOB has been freed. This is an untested work-in-progress and is intended to be a part of a larger solution to correctly handling network poll operations. 2018-09-08 11:21:18 -06:00
Gregory Nutt
33e3fb7a70 Correct mispellings of pseudo. Update some comments in signal.h. 2018-09-05 11:56:14 -06:00
Gregory Nutt
993321dda6 drivers/serial: Add support for Ctrl-Z. This works just like the recently added Ctrl-C support except that SIGSTP is sent when the Ctrl-Z characters is encountered vs. SIGINT. 2018-09-02 15:36:25 -06:00
Gregory Nutt
093348030e sched/: Update signal default STOP action. If waitpid was called with the WUNTRACED then wake up waitpid. Also fix some compile problems.. How did this work before? 2018-09-02 13:51:52 -06:00
Ouss4
adda352b15 drivers/sensors/dhtxx.c: Driver for DHTxx sensor. 2018-09-01 07:25:30 -06:00
Gregory Nutt
a7265d71c6 This commit adds support for default signal actions for SIGSTOP, SIGSTP, and SIGCONT.
Squashed commit of the following:

    Add procfs support to show stopped tasks.  Add nxsig_action() to solve a chicken and egg problem:  We needed to use sigaction to set default actions, but sigaction() would refuse to set actions if the default actions could not be caught or ignored.

    sched/signal:  Add configuration option to selectively enabled/disable default signal actions for SIGSTOP/SIGSTP/SIGCONT and SIGKILL/SIGINT.  Fix some compilation issues.

    sched/sched:  Okay.. I figured out a way to handle state changes that may occur while they were stopped. If a task/thread was already blocked when SIGSTOP/SIGSTP was received, it will restart in the running state.  I will appear that to the task/thread that the blocked condition was interrupt by a signal and returns the EINTR error.

    sched/group and sched/sched:  Finish framework for continue/resume logic.

    sched/signal:  Roughing out basic structure to support task suspend/resume
2018-08-30 10:27:18 -06:00
Xiang Xiao
20fc3ebcdd include/nuttx/ioexpander/gpio.h: Fix build break introduced by commit 459d9f2851 2018-08-30 07:25:26 -06:00
Xiang Xiao
11bccf42ea include/nuttx/usb/audio.h: Fix warning: 'missing whitespace after the macro name' 2018-08-29 06:10:52 -06:00
ligd
289af9a0fb configs/boardctl.c: Add support for board_app_finalinitialize() 2018-08-28 15:34:31 -06:00
Gregory Nutt
0756cf66ed sched/signal: Add support for SIGINT in addition to SIGKILL. drivers/serial: Use SIGINT instead of SIGKILL when control-C is pressed. 2018-08-28 12:15:31 -06:00
Gregory Nutt
e7ce9bbfc4 drivers/serial: Integrate new Ctrl-C logic with the ISIG flag in the termios c_lflag. Fix several compiler errors resulting from recently flurry of renaming. 2018-08-28 09:15:29 -06:00
Xiang Xiao
70a0bf0849 Squashed commit of the following:
fs/partition/fs_partition.c:  Add PTABLE parser

    fs/partion:  Add a partition parser framework

    fs/driver/fs_blockpartition.c:  Add register_blockpartition for block partition
2018-08-28 07:30:21 -06:00
Xiang Xiao
8b5ac497ad drivers/mtd/ftl.c: Support initialization of an FTL block device with a custom name 2018-08-28 07:15:57 -06:00
Xiang Xiao
159b88c871 include/limits.h and include/sys/types.h: Fix warning about 'SIZE_MAX' redefined. include/nuttx/usb/audio.h: Fix warnings due to '-' used whete '_' intended. 2018-08-28 06:41:57 -06:00
wangyanjiong
25f2bcea38 drivers/mtd: Add gd25 driver 2018-08-28 06:31:54 -06:00
Gregory Nutt
499b89feed sched/signal: Default Signal Actions. Change some types to superficially simplify. Add configuration options to enabled default signal behaviors on a per-signal basis. I don't think users are prepared for SIGALRM to terminate the task (which is the correct default behavior if you don't change it). Extend the implementation of default signals so that it is totally table driven and extensible by simply mondifying the content of const tables. 2018-08-27 15:37:43 -06:00
zhuguangqing
1bbe9baa29 drivers/pm: PM: Add PM_RESTORE to notify driver that device exit WFI so the driver could restore state. For example, WDT may stop counting before enter low power state and restore the counting agian in PM_RESTORE notification 2018-08-27 13:26:33 -06:00
zhuguangqing
7f4064e511 drivers/pm: PM: Decrease the power state in the reverse order. Since the child driver need power off before parent driver. 2018-08-27 13:22:11 -06:00
zhuguangqing
7d9787d530 drivers/power: PM: Add pm_querystate function 2018-08-27 13:18:09 -06:00
Xiang Xiao
006b7d3963 drivers/power: PM: Add pm_stay and pm_relax function so special apps(e.g. mediaplayer) could disable suspend during playback much like linux kernel counterpart 2018-08-27 13:16:34 -06:00
Gregory Nutt
6d094e4b33 sched/signals: Update the signal default action logic to support sigaction(). signaction() must be able to handle and input action of SIG_DFL to setup the default signal action; it mast also return SIG_DFL it is replacing the default action. 2018-08-27 13:13:23 -06:00
Xiang Xiao
6c057e608b Squashed commit of the following:
drivers/timers/arch_timer.c: implement timer arch API on top of timer driver interface

    drivers/timers/arch_alarm.c:  Implement alarm arch API on top of oneshot driver interface

    drivers/timers/arch_rtc.c:  Implement RTC arch API on top of RTC driver interface

    include/nuttx/timers/rtc.h:  Extend struct rtc_time by adding tm_nsec if RTC supporst hiresolution time.
2018-08-27 11:55:30 -06:00
Gregory Nutt
c0d234a474 Squashed commit of the following:
drivers/serial/Kconfig:  It is no longer necessary to restrict Ctrl-C handling to the FLAT build

    sched/signal:  Add a new configuration option to select signal default actions, separate handling of signal default actions from both task startup logic and from the serial TTY Ctrl-C logic.  Add a signal set in the group structure to keep track of what signals have been set to the default action.  In dispatching signals in PROTECTED or KERNEL mode, use this signal set to determine if the default signal handler is attached and dispatch the signal in kernel mode for the default actions.
2018-08-27 11:40:09 -06:00
Xiang Xiao
798922b9c6 include/nuttx/lib/modlib.h: Eliminate warning: 'CONFIG_MODLIB_MAXDEPEND' is not defined' 2018-08-27 11:39:52 -06:00
zhuyanlin
459d9f2851 Squashed commit of the following:
driver/ioexpander:  Add gpio_pin_unregister function to GPIO driver
  driver/ioexpander:  Add pinset struct to GPIO driver for interrupt pins larger than 64
  driver/ioexpander:  Initialize pintype/inttype when registering ioexpander device
  driver/ioexpander:  Add SETPINTYPE ioctl command to the GPIO driver
2018-08-27 09:25:11 -06:00
Xiang Xiao
b5f8c035a6 audio/audio_comp.c: Add the composite audio driver 2018-08-27 09:03:09 -06:00
ZhongAn
85a993999e drivers/audio/audio_i2s.c: Add audio_i2s device driver. 2018-08-27 08:52:08 -06:00
ZhongAn
47db09633c include/nuttx/audio/i2s.h: Add i2s_rxchannels and i2s_txchannels methods to the I2S lower half interface. 2018-08-27 08:37:57 -06:00
anchao
d795344014 nuttx/audio: Add hardware format support 2018-08-27 07:58:22 -06:00
ZhongAn
d77b9b1209 include/nuttx/audio/audio.h: Add ioctl cmd 'AUDIOIOC_SETBUFFERINFO' so user space could config the buffer 2018-08-27 07:57:16 -06:00
ZhongAn
4d115e925f include/nuttx/audio/audio.h: Change member samp of apb to pointer so driver can customize sample buffer allocation 2018-08-27 07:45:27 -06:00
anchao
5f28be71e5 Kconfig: Move 'option modules' from NSH_FILE_APPS to BUILD_LOADABLE 2018-08-27 07:06:57 -06:00
zhuyanlin
7864ef1588 include/nuttx/nuttx.h: Added nuttx.h header file which is analogous to the linux.h header file. Currently, it contains on the defintion of the container_of() macro. 2018-08-27 06:52:02 -06:00
Xiang Xiao
894ca622e6 nclude/sys/types: Move wint_t and wctype_t from wchar.h to types.h. This change is compatible as before since wchar.h include types.h indirectly. This fixes a compilation error with newlib's math.h: 'unknown type name wint_t' 2018-08-27 06:26:37 -06:00
QianWenfa
e2e0911bc4 include/nuttx/mutex.h: Add inline wrapper functions to more clearly support semaphores when used as mutexs. 2018-08-27 06:26:11 -06:00
liuhaiyang
0c9a4ac4f9 nclude/nuttx/semaphore: apply the semaphore wait function nxsem_wait_uninterruptible(). The function nxsem_wait_uninterruptible() is a wrapped version of nxsem_wait(), which is uninterruptible and convenient for use. 2018-08-27 06:07:50 -06:00
Gregory Nutt
8980b08fae include/nuttx/semaphore.h: don't include nuttx/fs/fs.h. (1) Avoid nested loops if CONFIG_SIG_EVTHREAD enabled, (2) semaphore.h doesn't depends on fs.h. 2018-08-27 06:05:28 -06:00
Xiang Xiao
71ad1993f2 Move clock_timespec_[add|subtract] to include/nuttx/clock.h 2018-08-27 06:04:04 -06:00
dongjiuzhu
bd24562aa5 include/nuttx/i2c/i2c_master.h: Add the standard speed macros. 2018-08-27 06:02:13 -06:00
Xiang Xiao
05949ff79c include/spawn.h: Fix posix_spawnattr_destroy warning: 'the address of attr will always evaluate as true' 2018-08-27 06:00:33 -06:00
zhuguangqing
8780c51cb3 include/queue.h: Add dq_tail marco 2018-08-27 05:57:53 -06:00
zhuyanlin
57b91a8cfc include/nuttx/kmalloc.h: Add {kumm/kmm}_calloc API. Add calloc API for manage user memory and kernel memory in Flat Build/Kernel Build without kernel heap. 2018-08-27 05:55:09 -06:00
Xiang Xiao
439aac1449 include/nuttx/compiler.h: fix warning: __cplusplus is not defined. Some gcc derived compiler do not define __cplusplus 2018-08-27 05:53:16 -06:00
Xiang Xiao
c139478f60 nclude/nuttx/fs/binfs.h: Fix warning: Type defaults to 'int' in declaration of 'mountpt_operations' 2018-08-27 05:50:52 -06:00
Xiang Xiao
1d9546ac1b include/crc64.h: fix warning: integer constant is too large for its type 2018-08-27 05:47:59 -06:00
Gregory Nutt
05faba2514 include/nuttx/fs/fs.h: ... conflicting types for file_fstat(). 2018-08-26 16:13:09 -06:00
dongjianli
23f14c2660 net/usrsock: Add the listen/accept/getpeername/ioctl support 2018-08-26 15:15:48 -06:00
Xiang Xiao
4c61565bbc include/nuttx/net/ethernet.h: Remove CONFIG_NET_ETHERNET guard 2018-08-26 14:55:47 -06:00
dongjianli
b48804cfc2 net/netdev/netdev_ioctl.c: Add si_ioctl callback and net_ioctl_arglen so usrsock could forward the ioctl to the remote end 2018-08-26 14:54:26 -06:00
Xiang Xiao
3eedabfded net/socket/getsockname.c: Add psock_getsockname function 2018-08-26 14:43:13 -06:00
Xiang Xiao
bcf9360e5f Move psock check from [get|set]sockopt to psock_[get|set]sockopt 2018-08-26 14:25:54 -06:00
Gregory Nutt
655be281e6 include/nuttx/compiler.h, include/poll.h: Add logic to determine if the compiler supports anonymous structures and unions. 2018-08-26 14:20:58 -06:00
dongjianli
56883eef3b fs/vfs/fs_poll.c: Add poll use in kernel space. 2018-08-26 13:44:07 -06:00
Xiang Xiao
3f50451046 fs/vfs/fs_fcntl.c, net/socket/net_dupsd.c, and net/socket/net_vfcntl.c: Add file_fcntl, psock_fcntl, and psock_dupsd for use within the kernel. 2018-08-26 13:31:18 -06:00
ligd
aa52c457cc fs/vfs/fs_fstat.c: Add file_fstat() function for internal OS use. 2018-08-26 13:26:37 -06:00
Xiang Xiao
ead2c40cd4 Squashed commit of the following:
drivers/serial/uart_16550.c: Support 16550 auto hardware flow control

    drivers/serial/uart_16550.c:  Add configuration option CONFIG_16550_SUPRESS_INITIAL_CONFIG.  This is identical to the standard configuration in arch/Kconfig CONFIG_SUPPRESS_UART_CONFIG, but with scope of only the 16550 driver.
2018-08-26 11:37:16 -06:00
Xiang Xiao
46e47c8dcf Squashed commit of the following:
drivers/serial/uart_16550.c:  Add a configuration, analogous to the STM32 configuration option, to suppress the NuttX standard re-ordering for /dev/ttySN for special case of the 16550 UART.

    config/serial: UART 16550: Add CONFIG_SERIAL_UART_ARCH_MMIO option so the a memory mapped device doesn't need to provide uart_getreg() and uart_putreg() implementations.

    u16550_txempty() should check UART_LSR_TEMT to avoid some data left in the transmit FIFO
2018-08-26 11:17:33 -06:00
ligd
11f8dc735c Squashed commit of the following:
drivers/serial:  Add Ctrl-C/Ctrl-X support.  This is an initial working implementation that still requires that several details be resolved.

    sched/task/task_start.c: Add default signal action to SIGKILL.
2018-08-26 08:49:08 -06:00
xuanlin
7e63b0b288 sched/wqueue, libs/libc/wqueue, configs: Remove work queue polling delay to simplify the code logic and save the power. 2018-08-25 14:58:07 -06:00
ligd
631071cded Squashed commit of the following:
sched/wqueue:  Modify high priority work queue to support multiple threads.

    sched/wqueue and libs/libc/wqueue:  workqueues don't need set global data to zero since .bss is cleared automatically.  Removing this unnecessary initialization also avoids the loss the work items queued before initialization.
2018-08-25 14:52:13 -06:00
Gregory Nutt
3f1869ea9d Rename CONFIG_ARCH_HAVE_TRIGGER_HOOK to CONFIG_ARCH_HAVE_IRQTRIGGER 2018-08-25 09:10:30 -06:00
Gregory Nutt
9bc951a335 Rename devif_loopback_out to devi_loopback 2018-08-25 08:33:21 -06:00
DisruptiveNL
cd2ced4d9a drivers/sensors and configs/nucleo-l476g: Add support for LSM303AGR and LSM6DSL sensors 2018-08-25 08:19:31 -06:00
Gregory Nutt
3bf96c8e7e net/arp: Improve arp_find() commit 9774d35010 to reduce the amount and frequency of data copies. 2018-08-25 07:12:21 -06:00
zhuguangqing
d38be46655 sched/irq: Add support interrupt chains in NuttX. IRQ chain is very useful in these cases: (1) Multiple hardware connect to the same request line(e.g. PCI), (2) Need multiple driver to support one hardware block (like Linux MFD) 2018-08-24 15:10:23 -06:00
Xiang Xiao
149748e4ed drivers/net: drivers/net: Add support for Microchip LAN91C111 driver 2018-08-24 11:07:07 -06:00
Xiang Xiao
fc194cf2ec drivers/timers: Add a new method to the struct oneshot_operations_s interface to get the current time from a oneshot timer driver (if it is available from the lower half) 2018-08-24 10:21:29 -06:00
Xiang Xiao
a6c68d233d drivers/timers: Add maxtimeout method to the struct timer_ops_s interface 2018-08-24 10:16:17 -06:00
Xiang Xiao
3af35699b9 include/nuttx/clock.h, sched/sched: Support the CPU load measurement using timer_lowerhalf_s interface 2018-08-24 10:10:57 -06:00
Xiang Xiao
0074afa0ac net/netdev: add devif_loopback_out() to check the loopback case where a packet is being sent to itself. Modify the net driver to call this function in this case. This function will simply re-inject the packet back into the network and the network driver will not put anything on the wire. 2018-08-24 09:21:33 -06:00
ligd
fb90f821fb include/nuttx/arch.h: Add architecture-specific prototypes for conversions between physical and virtual address. 2018-08-24 08:40:45 -06:00
Xiang Xiao
430bf16f1e Squashed commit of the following:
include/nuttx/arch.h:  Add prototype for an architecture-specific up_trigger_irq function
    arch/, include/nuttx, sched/sched:  Add the garbage collection hook so each architecture can do custom memory cleanup if necesary.
    arch/Kconfig:  Add configureation CONFIG_ARCH_GNU_NO_WEAKFUNCTIONS to suppress use of weak functions.  Some gnu derived toolchains do not support weak symbols
2018-08-24 08:30:01 -06:00
dongjianli
0df5e56e20 include/nuttx/arch.h: Add prototype for an architecture-specific up_trigger_irq function 2018-08-24 08:25:06 -06:00
Xiang Xiao
36b46a6a40 arch/ and task/sched: vfork operation needs to allocate and copy the task argument too. Also correction of the address correction cannot depend on the stack pointer since it is not available in all architectures. Rather callculate the offset from the stack allocation pointer 2018-08-24 07:43:00 -06:00
Gregory Nutt
e90f0403a6 binfmt/: Mostly cosmetic changes from review of a previous commit. 2018-08-24 06:10:50 -06:00
Gregory Nutt
9157422312 include/dsp.h: Add extern C support for use with C++ 2018-08-23 12:54:13 -06:00
xuanlin
2c93467436 pthreads: Add support static pthread stack. Add standard pthread_attr_setstack() and pthread_attr_getstack(). In all cases where the stack is released, add check to see which allocator must be used to free the stack: The user or the kernel allocator. 2018-08-23 09:49:20 -06:00
Xiang Xiao
86eef8ce3a mm/: add mm_heapmember function and reimplement kmm_heapmember base on mm_heapmember since this function is very useful if multiple heaps exist. 2018-08-23 09:38:49 -06:00
Xiang Xiao
377eb30129 binfmt: Add binfmt_initialize(). All binary formats are now registered centrally vs. in board-specific logic. This simplifies the usage of the binfmt subsystem. 2018-08-23 09:09:39 -06:00
Xiang Xiao
e2ccce1f2e apps/system/system/system.c: Add 'const' to make function prototype compatible with OpenGroup.org requirement 2018-08-23 06:40:59 -06:00
Gregory Nutt
07ef3fe018 Another update to the coding standard; Add some comments detailing the POSIX non-compliance in include/signal.h 2018-08-21 15:27:37 -06:00
Gregory Nutt
f20a2b4dcd include/sys/param.h: Add a dummy sys/param.h header file. This is not a standard file but is used by other systems and having the dummy file may minimize some porting efforts. 2018-08-19 08:24:30 -06:00
Gregory Nutt
ed4aae0fe0 include/endian.h and libs/libc/endian: Add support for endian.h. 2018-08-19 07:44:04 -06:00
Gregory Nutt
0e5b02552a inclued/stdio.h: popen()/pclose() are not available in KERNEL mode because they depend on task_spawn() which is not available in KERNEL mode. 2018-08-17 16:06:01 -06:00
Gregory Nutt
4dac881e24 include/stdio.h: Add prototypes for popen() and pclose(). Actual implementation is in apps/system/popen() 2018-08-17 10:40:59 -06:00
ichael Jung
aad8f6e45f drivers/usbdev/cdcecm.c: Adds USB Device Support for CDC/ECM 2018-08-16 08:49:11 -06:00
Gregory Nutt
4a724b1f3c net/: Remove all references to CONFIG_NET_USER_DEVFMT. That feature is now unconditionally enabled. This was done because (1) the feature does not require very much additional memory, and (2) it causes confusion in the configuration due to the additional complexity. And network drivers that fail to zero the device structure interface name field (d_ifname) because calling netdev_register() will, however, get a nasty surprise. 2018-08-14 08:01:52 -06:00
Gregory Nutt
ef3abe1423 Add missing function names in function headers. 2018-08-13 15:53:15 -06:00
Gregory Nutt
8c61c2f31b Remove trailing spaces at the end of lines. 2018-08-13 07:39:38 -06:00
Gregory Nutt
25fa50d504 fs/proc and sched/environ: Add support for a procfs entry that will permit examining the environment of any task. 2018-08-10 10:16:39 -06:00
Gregory Nutt
3973640fff Update some comments. Remove references to non-existent CONFIG_MAX_TASK_ARG. 2018-08-08 17:06:46 -06:00
Gregory Nutt
4e5cf1229c drivers/mmcsd/Kconfig: three configuration settings were within ifdef/endif and led to warning: xxx selects xxxx which has unmet direct dependencies. Fix by moving settings to drivers/Kconfig and outside of the ifdef-endif. Also renamed CONFIG_SDIO_PREFLIGHT to CONFIG_ARCH_HAVE_SDIO_PREFLIGHT to follow naming of similar hidden architecture capability configurations. 2018-08-05 17:58:17 -06:00
Gregory Nutt
b4b531ef1b include/nuttx/binfmt/binfmt.h: Remove fields from struct binary_s that are not longer used after commit 20a86dfc1b. 2018-08-05 08:50:43 -06:00
Gregory Nutt
20a86dfc1b binfmt/ and sched/group: Re-architect the way that loadable ELF or NXFLAT modules are unloaded. Memory resources must be recovered when the task loaded into memory exits. The originmal implementatino used the death-of-child SIGCHLD signal to perform the unload. There are several problems with this: It is overly complex, it requires that the parent task stay resident while the loaded task runs, and it has fatal logic flaws in the protected and kernel model builds because the user signal handler attempts to run in the kernel address space. This commit corrects with using a mindlessly simply BINFMT callback when the task exits. 2018-08-05 08:09:54 -06:00
Gregory Nutt
d68b0c35f9 Squashed commit of the following:
configs/olimex-stm32-p407:  Various changes as necessary to get the new kelf configuration working.
    configs/olimex-stm32-p407:  Add kernel ELF (kelf) configuration.
2018-08-04 16:18:51 -06:00
Gregory Nutt
056d704cf9 This commit brings in a fragmentary, experimental implementation of NETLINK sockets. There is not too much to that socket support on this initial commit, just the netlink socketer framework. However, I decided to bring it into master because there is a enough that I would not want to lose what is in place. And since it is dependent on CONFIG_EXPERIMENATL, its presence on master should be innocuous.
Squashed commit of the following:

    net/netlink:  Mark netlink support as EXPERIMENTAL.
    net/netlink/netlink_sockif.c:  Add netlink_getpeername to the socket interface.
    net:  Add getpeeername() support for netlink sockets.
    include/netpacket/netlink.h:  Add a few more definitions and structures used at the NetLink interface.  Still missing many.
    net/netlink:  Add basic framework for Netlink socket support.
    include/:  Add basic Netlink definitions.
2018-08-03 13:22:36 -06:00
Gregory Nutt
2fd4925965 Update some comments 2018-08-03 09:30:31 -06:00