Commit graph

15409 commits

Author SHA1 Message Date
Szymon Janc
87a7fe8399 kernel: legacy: Fix int overflow in nano_stack_init
Last argument for k_stack_init is of time int resulting in UINT_MAX
being converted to negative value. Instead of UINT_MAX use maximum
possible number of entires that won't result in stack->base and
stack->top overflow.

Change-Id: I8470f6dd18abcccc72590e07e0d0efd4ce2208cc
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-12-12 22:03:54 +00:00
Carles Cufi
680270f809 toolchain: Add a popcount macro for GCC
Hamming Weight or "popcount" consists in counting the number of bits set
to 1 in a particular word. This commit adds a macro to be able to use
the existing builtin for this purpose with the GCC compiler.

Change-Id: Iec64c19e897de2bc02e981071465bbe230ee9add
Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2016-12-12 20:07:53 +00:00
Flavio Santes
935c447ae0 shell: Add ARG_UNUSED macro to avoid compiler warnings
The ARG_UNUSED macro is added to avoid compiler warnings.

Change-Id: If14c3928a30c8f3156cdcd0fe11e22407a78c088
Signed-off-by: Flavio Santes <flavio.santes@intel.com>
2016-12-12 20:02:30 +00:00
Johan Hedberg
c8201b2c2c kernel: Introduce new k_delayed_work_remaining_get API
Applications may want to know how much time is left until a delayed
work gets scheduled. To prevent applications from having to track this
themselves simply use the information that's already embedded as part
of the timer that's part of the delayed work struct.

Change-Id: I189df2f3be8b207e68b554a0cbb4f97f1a99de22
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-12-12 18:55:40 +00:00
Johan Hedberg
f99ad3f0e2 kernel: Refactor remaining time evaluation for timeouts
Factor out the code for evaluating the remaining time for _timeout
structs so that it can also be used for other objects besides k_timer
structs (like k_delayed_work, coming in a subsequent patch).

Change-Id: I243a7b29fb2831f06e95086a31f0d3a6c37dad67
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-12-12 18:55:40 +00:00
Anas Nashif
79631ad457 device: do not set struct as deprecated
Change-Id: I6cbec81e02dc706ba86f27aab76740031f89dbd1
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-12-11 06:36:14 -05:00
Baohong Liu
891273dd1a device: add deprecated attribute to device sync APIs
Device_sync_call related APIs and typedef are actually wrappers
for kernel semaphores. These APIs and typedef will be
deprecated. Let's add deprecated attribute to give deprecation
warning.

Jira: ZEP-1411

Change-Id: Ia07557cc81bd9ee8e41f2e17be4607c4bd6d23bd
Signed-off-by: baohong Liu <baohong.liu@intel.com>
2016-12-11 11:21:05 +00:00
Marcus Shawcroft
a715194d43 random: Rewrite sys_rand32_init() with SYS_INIT()
Use the SYS_INIT() mechanism to invoke the sys_rand32_init() function
in random drivers that require an initializer.  Remove all empty
sys_rand32_init() instances.

The existing explicit sys_rand32_init() function runs immediately after
PRE_KERNEL_2 before stack canaries are initialized.  In order to get
equivalent behaviour with sys_rand32_init() we set SYS_INIT() to
initialize the random drivers at the lowest priority of PRE_KERNEL_2.

Change-Id: I4521e44daac806bc4eef01ce7fdf2ba5367e0587
Signed-off-by: Marcus Shawcroft <marcus.shawcroft@arm.com>
2016-12-11 11:18:18 +00:00
Johan Hedberg
244a4dfe73 printk: Export _vprintk similar to how _prf is exported
There are some corner cases where direct access to the formatter
function is needed. Export _vprintk() so code can use it in a similar
way that _prf() can be directly used.

Change-Id: I9dfb68f87f310e900c662dc8beb320bb4ff7d8b2
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-12-11 04:26:05 +00:00
Johan Hedberg
fb37a5c330 Bluetooth: Fix stack overhead amount when debug is enabled
After some more careful measurements, the worst measured overhead is
288 bytes. Adjust BT_STACK_DEBUG_EXTRA correspondingly to 300 (to give
a bit of playroom still on top of this).

Change-Id: Icdf477b05b40917027314b180c2b69c8c6c759b3
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-12-09 12:57:37 +00:00
Johan Hedberg
f85878146a Bluetooth: Fix BT_STACK_DEBUG_EXTRA for BLUETOOTH_DEBUG_LOG
BT_STACK_DEBUG_EXTRA was adjusted by commit 047c6eacf7,
however it failed to cover this #ifdef section in log.h.

Change-Id: I1a9cd81dc25e9465daba62f0116b2661ac047362
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-12-09 13:11:45 +02:00
Jaganath Kanakkassery
4349141935 Bluetooth: RFCOMM: Implement Disconnect API
This will be used by the user to disconnect or cancel connect dlc.
This also defines an internal close function which will take
appropriate action based on the dlc state.

In case of user initiated disconnection if some pending packets are
there in queue then it has to be sent before sending DISC packet.

< ACL Data TX: Handle 256 flags 0x00 dlen 8
      Channel: 64 len 4 [PSM 3 mode 0] {chan 0}
      RFCOMM: Disconnect (DISC) (0x43)
         Address: 0x2b cr 1 dlci 0x0a
         Control: 0x53 poll/final 1
         Length: 0
         FCS: 0x6d

> ACL Data RX: Handle 256 flags 0x02 dlen 8
      Channel: 64 len 4 [PSM 3 mode 0] {chan 0}
      RFCOMM: Unnumbered Ack (UA) (0x63)
         Address: 0x29 cr 0 dlci 0x0a
         Control: 0x73 poll/final 1
         Length: 0
         FCS: 0x26

Change-Id: Ie4fa3bd8f6b279fee6fb56ddce198d82c5047849
Signed-off-by: Jaganath Kanakkassery <jaganathx.kanakkassery@intel.com>
2016-12-09 06:52:56 +00:00
Johan Hedberg
047c6eacf7 Bluetooth: Fine-tune debug-based stack size increase
Now that printk is the default backend for logging the overhead is not
as bad as with printf. 160 seems to be roughly the worst case amount
of overhead that debug logs now cause.

Change-Id: Ia5937b7318e00cc31c72fa1702c73a57bca0603a
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-12-09 08:18:24 +02:00
Johan Hedberg
b94a69e346 Bluetooth: Fix format specifier in address helpers
Instead of %2.2x we should use %02x since printk doesn't (currently)
support the former.

Change-Id: I773972e63071b81c95c65de292f12ab14d7c310b
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-12-09 08:18:24 +02:00
Johan Hedberg
a4b6b2417d Bluetooth: Switch from printf to printk functions
There's now snprintk available that's more light-weight on the stack
than snprintf.

Change-Id: I6b3e4409703ca92fe6b8f4146ff47c490ab826cb
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-12-09 08:18:24 +02:00
Johan Hedberg
5ac059b6b9 Bluetooth: Extend advertising parameters with optional own address
Applications may want finer control of the NRPA used for
non-connectable beacons, and provide it up-front rather than letting
the stack generate one.

Change-Id: I84d459372cc85ed09a8f9cde16dbb9b98dec2a43
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-12-09 08:18:24 +02:00
Johan Hedberg
d883fcf814 Bluetooth: Make LE random address helpers public
Expose helpers in hci.h for setting and getting the LE random address
type.

Change-Id: I7c6437051f0b2d1f5f79e19b2616bb643ae6300b
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-12-09 08:18:24 +02:00
Johan Hedberg
7c7f36f818 sys_log: Remove option of mapping to printf
Having the logging macros arbitrarily mapping to printk or printf
based on selected Kconfig options that the app isn't necessarily aware
of can have unexpeced (bad) side effects. In particular, printf
consumes *a lot* more stack (closer to 512 bytes) than printk, so
enabling a seemingly innocent CONFIG_STDOUT_CONSOLE option could lead
to stack overflows that are hard to debug.

Jira: ZEP-1419

Change-Id: I5fd77a7ed402e9ca67af23857e0f886f96d243bc
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-12-07 13:15:59 +00:00
Vincenzo Frascino
6be2a81ae4 clock_control: Add Beetle clock_control
This patch adds the clock_control implementation for the ARM LTD
Beetle platform.

The main features enabled are:
* Clock on and off in ACTIVE, SLEEP and DEEPSLEEP mode.
* PLL support (freq: 12, 36, 48 Mhz).

The integration with the existing drivers will be done in future
patches.

Jira: ZEP-1300
Change-Id: I07cb2325275bd86a036e8e24aeb7bbf2c6176a93
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@linaro.org>
2016-12-06 10:31:45 -06:00
Neil Armstrong
3842c60ce3 stm32l4: add clock control driver
Add the clock driver for the STM32L4 series.

Change-Id: Icdf79061f163d8d00187b382d1564422fb875c5b
Signed-off-by: Fabien Parent <fparent@baylibre.com>
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2016-12-06 10:31:41 -06:00
Johan Hedberg
c899cd0d12 printk: Add APIs to print into strings instead of default output
These correspond to the libc snprintf and vsnprintf APIs.

Change-Id: If3944972ed95934a4967756593bb2932c3359b72
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-12-05 20:08:40 +00:00
Johan Hedberg
3ab60466de printk: Refactor to allow passing a parsing context around
Pass a parsing context around, allowing counting the number of
characters written, which is then returned in the return value of
printk(). This makes printk more similar to printf and prepares the
way to extend the implementation to support printing to strings.

Change-Id: Ib28a18a4f36fc58b98b228fd5763b2c05f5af7bc
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-12-05 20:08:39 +00:00
Anas Nashif
70f9244db7 Merge "Merge net branch into master" 2016-12-05 15:56:26 +00:00
Marcus Shawcroft
1fbabd4150 arm: Refactor irq_lock inline asm formatting.
Drop the unnecessary trailing whitespace formatting in inline asm.

Change-Id: I351df91b7175fe21d268d325865838b4840def8d
Signed-off-by: Marcus Shawcroft <marcus.shawcroft@arm.com>
2016-12-05 14:56:37 +00:00
Marcus Shawcroft
3059e1fce8 arm: Refactor cortex-m4 irq_lock tmp handling.
Replace the use of a hardwired temporary register in the irq_lock()
implementation with a local variable.  This will allow the compiler
more flexibility in register allocation.

Change-Id: Ifbdb52fca1d40404d55934343ac2a8153df7e1a8
Signed-off-by: Marcus Shawcroft <marcus.shawcroft@arm.com>
2016-12-05 14:56:36 +00:00
Marcus Shawcroft
70c137d73d kernel: Fix CC clobber in cortex_m4 irq_lock()
The cortex-m4 irq_lock() implementation uses a movs instruction, thus
clobbering the condition code, but does not include the clobber in the
asm clobber list.  This is a bug in the situation where the compiler
schedules a live condition code over the inline lock instructions.

Since the irq_lock() implementation does not need to kill the CC we
simply switch to mov from movs.

Take the opportunity to drop the unnecessay .n and let the assembler
choose an appropriate encoding.

This fixes a bug found by inspection, it has not actually been
observed in real code.

Change-Id: Id60fa3362df9d4bf05c3d5e23066410ede92d73c
Signed-off-by: Marcus Shawcroft <marcus.shawcroft@arm.com>
2016-12-05 14:56:35 +00:00
Marcus Shawcroft
3c95ce6da6 i2c: Add doxygen markup for internal only definitions.
Change-Id: I85110b70b6b964ddb96e64ffb8ac16522b2f58a6
Signed-off-by: Marcus Shawcroft <marcus.shawcroft@arm.com>
2016-12-04 12:49:43 +00:00
Szymon Janc
a7e746047f Bluetooth: Account K_THREAD_SIZEOF in BT_STACK macros
This makes BT_STACK_* macros to account K_THREAD_SIZEOF overhead of
thread. This make it easier for developer as he only needs to care
about size needed by his own code. Also size reported by stack_analyze
now match what was passed to BT_STACK macro.

Without this patch we were pretty close to stack overflow on x86:
ecc stack (real size 1280):     unused 52       usage 1164 / 1216 (95 %)
rx stack (real size 1024):      unused 44       usage 916 / 960 (95 %)
cmd tx stack (real size 256):   unused 16       usage 176 / 192 (91 %)
conn tx stack (real size 256):  unused 4        usage 188 / 192 (97 %)

With this patch stacks have reasonable utilizations:
ecc stack (real size 1344):     unused 112      usage 1168 / 1280 (91 %)
rx stack (real size 1088):      unused 108      usage 916 / 1024 (89 %)
cmd tx stack (real size 320):   unused 80       usage 176 / 256 (68 %)
conn tx stack (real size 320):  unused 68       usage 188 / 256 (73 %)

Change-Id: I9d9c49fab5a455ffc6b96bc75d5afadcabc6dc79
Signed-off-by: Szymon Janc <ext.szymon.janc@tieto.com>
2016-12-03 17:09:38 +00:00
Arun Jagadish
6f3c4bf425 Bluetooth: AVDTP: SEP Definition
Added
SEP structure
SEP Registration function

Change-Id: Ib8c4a1753c85390009c154a50a1a1a2f2794e8a2
Signed-off-by: Arun Jagadish <arun.jagadish@intel.com>
2016-12-03 17:09:38 +00:00
Andrew Boie
bba445b31f nios2: fix irq_lock/unlock ordering bug
Memory accesses could be reordered before an irq_lock() or
after an irq_unlock() without the memory barriers.

See commit 15bc537712 for the
ARM fix for a complete description of the issue and fix.

Change-Id: I1d96fe0088d90150f0888c2893d017155fc0a0a7
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-12-03 00:05:24 +00:00
Benjamin Walsh
a08c4b81e9 arc: fix irq_lock/unlock ordering bug
Memory accesses could be reordered before an irq_lock() or after an
irq_unlock() without the memory barriers.

See commit 15bc537712 for the ARM fix for
a complete description of the issue and fix.

Change-Id: I056afb0406cabe0e1ce2612904e727ccce5f6308
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2016-12-02 18:35:31 +00:00
Benjamin Walsh
1f8125a416 x86: fix irq_lock/unlock ordering bug
Memory accesses could be reordered before an irq_lock() or after an
irq_unlock() without the memory barriers.

See commit 15bc537712 for the ARM fix for
a complete description of the issue and fix.

Change-Id: Ic92a6b33f62a938d2252d68eccc55a5fb07c9114
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2016-12-02 18:07:22 +00:00
Marcus Shawcroft
5387413c3e arm: fix irq_unlock() ordering bug
Add the missing memory clobber to irq_unlock() in order to prevent the
compiler reordering memory operations over the unlock.

Change-Id: If1d664079796618ed247ff5b33b8b3f85fb7e680
Signed-off-by: Marcus Shawcroft <marcus.shawcroft@arm.com>
2016-12-02 10:37:51 -06:00
Marcus Shawcroft
15bc537712 kernel: Fix ARM irq_lock() ordering bug.
The inline asm definition of irq_lock() on the ARM architecture marks
the ASM as volatile which prevents the compiler from removing the
isntruction but does provide any information to the compiler to
prevent the inline ASM instruction being re-ordered relative to other
instructions.  The instruction used in irq_lock() do not touch memory,
however in order to acheive their intended purpose they must be
ordered relative to other memory access instruction.  This is acheived
by adding the "memory" clobber.

Instances of the compiler inappropriately re-ordering irq_lock() calls
relative to other instructions without this patch can be observed in
the code generated for k_sleep() on NRF51 target boards.

Signed-off-by: Marcus Shawcroft <marcus.shawcroft@arm.com>
Change-Id: I9d42d54cd9a50e8150c10ce6715af7ca2f5cfe51
2016-12-02 15:28:45 +01:00
Tomasz Bursztyka
ba90139cbd ieee802154: cc2520: Externalize how GPIOs are configured
Currently it's only possible to configure those GPIOs through
boards.<h/c> files and thus it's not relevant for board that do not
embed cc2520 but might get one wired to it, unlike
quark_se_c1000_devboard which directly embeds one cc2520.

Change-Id: I819bc1d2de707ea12eb70dc60a40b28f92666e51
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2016-12-02 12:41:20 +02:00
Flavio Santes
b965fb5ff1 iot: Add HTTP support for Zephyr
This commit adds HTTP message handling support for Zephyr.
So, no network routines are involved at this level.

To add HTTP message handling support for Zephyr, we explored the
following options:

1. Importing an external project and perhaps adapting it to fit our
   requirements.
   The criteria to pick one codebase among all the available projects
   are: licensing, correctness and performance.

2. Writing our own implementation from scratch.

We decided to import an external project instead of implementing our
own parser, mainly due to code maturity and correctness. It could take
more time to obtain a production-ready parser from scratch than adapting
a state-of-art library.

The following is a list of some projects offering similar functionality.

lighttpd (many files)
	* License: revised BSD license
	* Supported: active
	* Comments: this parser can't be integrated to Zephyr due to
	  dependencies that currently are not satisficed by our SDK.

nginx (src/http/ngx_http_parse.c)
	* License: 2-clause BSD-like
	* Supported: very active
	* Comments: this parser can't be integrated to Zephyr due to
	  dependencies that currently are not satisficed by our SDK.

wget (src/http-parse.c)
	* License: GPL 3.0
	* Supported: very active
	* Comments: this code can't be included in Zephyr due to
	  licensing issues

curl (lib/http.c)
	* License: MIT/X derivate, see:
	  https://curl.haxx.se/docs/copyright.html
	* Supported: very active
	* Comment: it must be forked and adapted to run in Zephyr.
	  It is not optimized for low-power devices.

nodejs http-parser (http_parser.c)
	* License: nginx license (2-clause BSD-like) and MIT license
	* Supported: very active
	* Comments: optimized with performance in mind.
	  From https://github.com/nodejs/http-parser: "It does
	  not make any syscalls nor allocations, it does not buffer data,
	  it can be interrupted at anytime. It only requires about 40
	  bytes of data per message stream."

So, nodejs/http-parser looks a very good choice for Zephyr. In this
commit, we integrate nodejs' parser to Zephyr.

Origin: https://github.com/nodejs/http-parser/releases/tag/v2.7.1
        https://github.com/nodejs/http-parser/archive/v2.7.1.tar.gz

NOTE:
	This patch reformats the http_parser files to reduce checkpatch
	warnings. Changes made in this refactoring are available at:
Repo:	https://gitlab.com/santes/http_parser/commits/refactoring1
Commit:	9ccfaa23f1c8438855211fa902ec8e7236b702b1

Jira: ZEP-346
Jira: ZEP-776

Change-Id: I29b1d47f323a5841cd4d0a2afbc2cc83a0f576f0
Signed-off-by: Flavio Santes <flavio.santes@intel.com>
2016-12-02 12:41:20 +02:00
Jukka Rissanen
481f67e266 net: nbuf: Provide metadata info for sent TCP buf
Create a variable in nbuf metadata area for storing TCP
buf_sent information.

Change-Id: I21a85c58183f1e4997d03d4a93546ddd9b32e977
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:19 +02:00
Andy Ross
094c65051c net: tcp: TCP transmission
Hook up TCP transmission through the net_context_send() API.  Queues
packets via a list in the net_buf header, but as of right now simply
transmits the queue synchronously, ignoring the need for retransmit
and the limits of the receive window on the other side.

Requires that the ACK transmission be moved ahead of the net_context
callback invokation.  This to work around a glitch in the way ACKs
work with queueing (they depend on current state, but packets are
assembled just once) that will be fixed in a coming patch.

Change-Id: I7490333e4b314e7734fcc03f2a63d76ae89d698a
Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
Signed-off-by: Leandro Pereira <leandro.pereira@intel.com>
2016-12-02 12:41:19 +02:00
Jukka Rissanen
b4cba17408 net: Fix stack info collector in net shell
The cc2520 driver RX thread did not like the stack information
collection macros defined in net_core.h. Both the cc2520 TX and
RX got the same variable name which did not compile.
This is now changed so that the first parameter is added to
the variable name to create a unique variable.

Change-Id: Ia41d01a71afd73af2ef31aa5f7a890a3cf0385aa
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:18 +02:00
Jukka Rissanen
68ea9377e6 net: Make native IP stack the default
As the native IP stack is now the default, there is no need
for corresponding Kconfig option.

Change-Id: I08e4992f540f928a2b7378e8803e634e38725348
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:17 +02:00
Jukka Rissanen
6b43821f20 net: Remove legacy Contiki based uIP stack
This commit removes the legacy Contiki based uIP stack.
The new native IP stack must be used after this commit.

The commit also removes following things:
- legacy cc2520 driver
- legacy ethernet drivers
- legacy IP stack samples

and changes these things:
- disabled tests that only work for legacy IP stack
- select new IP stack by default
- enable random number generator by default as it is needed
  by the new IP stack

Change-Id: I1229f9960a4c6654e9ccc6dac14a7efb9394e45d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:17 +02:00
Jukka Rissanen
1b9b1d46c3 net: Add util to loop all network contexts
This is to be used in net-shell to view currently
available network connections.

Change-Id: Iadb6555ed6db4e8fb0639e6d0dcf1eccd970acca
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:16 +02:00
Jukka Rissanen
e765a5a2e2 net: Add initial IP stack offloading support
If IP stack offloading is enabled, then call corresponding
L2 driver when corresponding net_context API function is
called. The L2 driver can then do its magic to send/recv
IP packet or do what ever with it.

Change-Id: I26695cee6feb80a41923db0165f22d94477333be
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:16 +02:00
Leandro Pereira
1209245bac util: Ensure ARRAY_SIZE() will only take arrays
This code is inspired by a similar feature found in ccan[1],
that enforces that the parameter passed to ARRAY_SIZE() is
always an array and not a generic pointer.  This is a slightly modified
version that will work if the macro is expanded outside of a function
body.

The check is performed by comparing if typeof(array) and
typeof(&array[0]) are of a different type.  Due to the way arrays
decays to pointers in C, if one passes a pointer, the types won't be
compatible and a compile time assertion will fail.

No bugs have been found with this change, but since there's no runtime
or size overheads, there's no reason to not enable it.

[1] https://github.com/rustyrussell/ccan/blob/master/ccan/array_size/\
    array_size.h

Change-Id: I6c321714d0024298e593176be43b2d0b5362cc0d
Signed-off-by: Leandro Pereira <leandro.pereira@intel.com>
2016-12-02 12:41:16 +02:00
Leandro Pereira
4f3be3951a util: Add PART_OF_ARRAY() to check if pointer points to array element
This macro does two things: first, it validates that the pointer is not
NULL.  Second, it validates if it's between the first and the last
element in the array.

This is useful for cases where a pool of structures are used, such as
in the network subsystem.

Change-Id: I9d815936e31d87a3b3ff80466eea97bc4ad954b5
Signed-off-by: Leandro Pereira <leandro.pereira@intel.com>
2016-12-02 12:41:16 +02:00
Jukka Rissanen
8e84e36f14 net: Declare a macro to define stacks used by networking
The macro defines the stack as usual, but if user has
enabled net shell (CONFIG_NET_SHELL), then additional
information about the stack is stored in net_shell
linker section. The information in the net_shell linker
section is then used to print information about the
stacks in the networking sub-system.

Change-Id: Ic6e9f16a73a192b9a59d32a6d0070322382f98bd
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:14 +02:00
Jukka Rissanen
7502824598 net: Use alignment macros when copying IP address
The original version can fail in ARM like this

***** USAGE FAULT *****
  Executing thread ID (thread): 0x200027a8
  Faulting instruction address:  0x00008080
  Unaligned memory access
Fatal fault in thread 0x200027a8! Aborting.

so use UNALIGNED_PUT() and UNALIGNED_GET() instead.

This failure was seen when IPv6 address was
copied to neighbor cache in ipv6.c:nbr_new().

Change-Id: I638424b9a95c451e13314ca9182c39ab8aa71830
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:13 +02:00
Jukka Rissanen
40b91b05c4 net: Fix unknown func call when getting stack vars
If CONFIG_INIT_STACKS is not enabled but CONFIG_NET_SHELL is,
then net_analyze_stack_get_values() was not properly compiled
out which caused unknown function call.

Change-Id: I18de5ec0b5d6ab7876e801c83b82c9dd5bf22093
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:13 +02:00
Jukka Rissanen
209b0cdb1c net: Add IPv4 address string max length
Change-Id: I37a2ea9371c34353f259300452fd228a00b26aa8
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:10 +02:00
Jukka Rissanen
e69fbacc5a net: Add util to check if IPv4 address is unspecified
Change-Id: I373bc32481ad186a3c198ed29709f12ea40cf583
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2016-12-02 12:41:10 +02:00