Commit Graph

314 Commits

Author SHA1 Message Date
Sebastian Huber
2711914f82 Use <sys/endian.h>
Update #2803.
2017-01-24 08:39:22 +01:00
Sebastian Huber
c69d6aa265 libblock: Fix for RTEMS_DEBUG 2016-12-12 15:49:59 +01:00
Sebastian Huber
0a9b6eb056 libblock: Fix for RTEMS_DEBUG 2016-11-24 12:04:15 +01:00
Sebastian Huber
89f8d9fcc0 libblock: Use proper semaphore attr for mutex
Close #1452.
2016-06-06 12:57:06 +02:00
Chris Johns
24d0ee57a4 cpukit, testsuite: Add rtems_printf and rtems_printer support.
This change adds rtems_printf and related functions and wraps the
RTEMS print plugin support into a user API. All references to the
plugin are removed and replaced with the rtems_printer interface.

Printk and related functions are made to return a valid number of
characters formatted and output.

The function attribute to check printf functions has been added
to rtems_printf and printk. No changes to remove warrnings are part
of this patch set.

The testsuite has been moved over to the rtems_printer. The testsuite
has a mix of rtems_printer access and direct print control via the
tmacros.h header file. The support for begink/endk has been removed
as it served no purpose and only confused the code base. The testsuite
has not been refactored to use rtems_printf. This is future work.
2016-05-25 15:47:34 +10:00
Sebastian Huber
d8ec270b33 libblock: Drop superfluous <stdlib.h> include
Drop superfluous <stdlib.h> include from <rtems/diskdevs.h> since this
leads to conflicts with the latest Newlib in case this header file is
used in the FreeBSD kernel space, e.g. for USB mass storage support.
2016-04-07 10:29:09 +02:00
Sebastian Huber
47a471a7dd libblock: Fix ramdisk::free_at_delete_request init
Avoid uninitialized ramdisk::free_at_delete_request.  The error was
visible in sporadic libtests/block01 failures.
2016-01-15 14:19:16 +01:00
Sebastian Huber
08a807b0ad libblock: Print block sizes and count 2015-11-02 08:21:49 +01:00
Sebastian Huber
09d4f629b2 libblock: Avoid NULL pointer access 2015-11-02 08:21:49 +01:00
Sebastian Huber
f97536dcd3 basdefs.h: Add and use RTEMS_UNUSED 2015-10-26 09:13:19 +01:00
Sebastian Huber
c52568dcdb basdefs.h: Add and use RTEMS_DEPRECATED 2015-10-26 09:13:19 +01:00
Sebastian Huber
5d42857662 libblock: Fix warning 2015-03-05 11:23:08 +01:00
Sebastian Huber
cf36b70e8d IMFS: Replace node union with individual struct
This reduces the average node size.

Add and use IMFS_GENERIC_INITIALIZER().
2015-01-27 06:54:22 +01:00
Sebastian Huber
3b4ca3ab0f bdbuf: Fix race condition with sync active flag
Bug report by Oleg Kravtsov:

In rtems_bdbuf_swapout_processing() function there is the following
lines:

if (bdbuf_cache.sync_active && !transfered_buffers)
{

    rtems_id sync_requester;
    rtems_bdbuf_lock_cache ();
    ...

}

Here access to bdbuf_cache.sync_active is not protected with anything.
Imagine the following test case:

1. Task1 releases buffer(s) with bdbuf_release_modified() calls;

2. After a while swapout task starts and flushes all buffers;

3. In the end of that swapout flush we are before that part of code, and
assume there is task switching (just before "if (bdbuf_cache.sync_active
&& !transfered_buffers)");

4. Some other task (with higher priority) does bdbuf_release_modified
and rtems_bdbuf_syncdev().

This task successfully gets both locks sync and pool (in
rtems_bdbuf_syncdev() function), sets sync_active to true and starts
waiting for RTEMS_BDBUF_TRANSFER_SYNC event with only sync lock got.

5. Task switching happens again and we are again before "if
(bdbuf_cache.sync_active && !transfered_buffers)".

As the result we check sync_active and we come inside that "if"
statement.

6. The result is that we send RTEMS_BDBUF_TRANSFER_SYNC event! Though
ALL modified messages of that task are not flushed yet!

close #1485
2014-11-28 10:56:46 +01:00
Sebastian Huber
e681762704 bdbuf: Use rtems_cache_aligned_malloc() 2014-11-25 16:12:59 +01:00
Sebastian Huber
3bb9c61c58 bdbuf: Use rtems_cache_get_data_line_size() 2014-11-20 11:36:07 +01:00
Sebastian Huber
40dcafaf80 Add and use RTEMS_CONTAINER_OF() 2014-08-05 09:30:33 +02:00
Sebastian Huber
98f2d5c505 libblock: Avoid recursive mutex 2014-06-03 08:28:46 +02:00
Ralf Kirchner
1fc2e960ce libblock: Add RTEMS_BDBUF_USE_PTHREAD
Use the PTHREAD mutexes and condition variables if available.  This
helps on SMP configurations to avoid the home grown condition variables
via disabled preemption.
2014-06-02 16:26:25 +02:00
Ralf Kirchner
606ed52568 libblock: Use pthread_once() for initialization
Enabling and disabling preemption as done for single core will not work
for SMP.  In the bdbuf initialization preemption handling can be avoided
in general by using pthread_once().
2014-06-02 13:48:41 +02:00
Sebastian Huber
dc18190be4 score: Add and use RTEMS_ZERO_LENGTH_ARRAY 2014-04-15 08:37:11 +02:00
Chris Johns
c49985691f Change all references of rtems.com to rtems.org. 2014-03-21 08:10:47 +11:00
Sebastian Huber
53ad908a64 score: Add SMP lock profiling support 2014-03-14 08:46:49 +01:00
Sebastian Huber
d50acdbb6c score: Add local context to SMP lock API
Add a local context structure to the SMP lock API for acquire and
release pairs.  This context can be used to store the ISR level and
profiling information.  It may be later used to enable more
sophisticated lock algorithms, e.g. MCS locks.

There is only one lock that cannot be used with a local context.  This
is the per-CPU lock since here we would have to transfer the local
context through a context switch which is very complicated.
2014-03-11 10:58:09 +01:00
Sebastian Huber
56bea4339f Filesystem: Use default kqfilter and poll handler 2013-12-20 10:31:53 +01:00
Sebastian Huber
2f68778f08 Filesystem: Add readv/writev handlers
The readv() and writev() support was implemented in terms of multiple
calls to the read and write handlers.  This imposes a problem on device
files which use an IO vector as single request entity.  For example a
low-level network device (e.g. BPF(4)) may use an IO vector to create
one frame from multiple protocol layers each with its own IO vector
entry.
2013-12-20 10:31:53 +01:00
Sebastian Huber
0adc8a74a8 libblock: Use LAST for the last partition block 2013-12-04 09:12:42 +01:00
Wendell P Silva
62ba20d759 PR2157: fdisk partition table dump improvement
Show the correct index of partition's last block (partition end).

The documentation of struct rtems_bdpart_partition (P) says that the member
'end' is the "Block index for partition end (this block is not a part of the
partition)". Then, the fdisk's partition table dump should print ((P)->end -
1).

Currently, one can think that the last block of a partition P is superposing
the beginning of the partition (P + 1). Example:

----------------------------------------
       PARTITION TABLE
------------+------------+--------------
 BEGIN      | END        | TYPE
------------+------------+--------------
       2048 |     133120 |       FAT 32
     133120 |   15628032 |       FAT 32
------------+------------+--------------

With be proposed patch, it would be:
----------------------------------------
       PARTITION TABLE
------------+------------+--------------
 BEGIN      | END        | TYPE
------------+------------+--------------
       2048 |     133119 |       FAT 32
     133120 |   15628031 |       FAT 32
------------+------------+--------------
2013-12-03 14:55:34 -05:00
Ric Claus
865c307242 Remove double count of start offset 2013-10-17 08:59:55 +02:00
Sebastian Huber
390e987eb3 libblock: PR2145: Limit maximum read-ahead blocks
This helps to prevent stack overflows due to configuration errors.
2013-09-16 10:54:51 +02:00
Gedare Bloom
74d357513f flashdisk: swap arguments to checksum helper
The arguments to rtems_fdisk_calc_crc16() are reversed when called from
rtems_fdisk_page_checksum().

26052 Operands don't affect result
2013-09-05 14:31:14 -04:00
Gedare Bloom
59261fba76 nvdisk: swap arguments to checksum helper
The arguments to rtems_nvdisk_calc_crc16() are reversed when called from
rtems_nvdisk_page_checksum().

26053 Operands don't affect result
2013-09-05 14:28:14 -04:00
Gedare Bloom
5f040b8829 sparse-disk: check return value from semaphore_obtain/release
In case obtain/release is unsuccessful, cause a fatal error.
2013-09-05 14:21:32 -04:00
Gedare Bloom
121dd88103 bdpart: Argument cannot be negative
If open(fd) fails then avoid the error path that calls close(fd).
2013-09-05 13:22:49 -04:00
Sebastian Huber
07ad4b6660 libblock: Use unprotected chain extract
This area is protected by the media mutex.
2013-08-27 10:48:15 +02:00
Sebastian Huber
842d63bae5 libblock: Avoid uninitialized variable 2013-08-26 09:53:22 +02:00
Sebastian Huber
dbdfc78fc7 libblock: PR2040: Avoid NULL pointer access
This partly reverts commit 08b9d53460.

Avoid a NULL pointer access and perform the source segment erase if
necessary.
2013-08-23 09:24:10 +02:00
Sebastian Huber
66c00789ef libblock: Add missing initializer 2013-08-14 12:14:31 +02:00
Sebastian Huber
9de9b7d237 libblock: Add SMP support 2013-08-14 11:10:45 +02:00
Sebastian Huber
88c74ab115 score: Merge tod implementation into one file
Delete TOD_MICROSECONDS_PER_SECOND, TOD_MICROSECONDS_TO_TICKS() and
TOD_MILLISECONDS_TO_TICKS().
2013-07-26 11:55:47 +02:00
Sebastian Huber
7660e8b347 Include missing <string.h> 2013-07-23 15:12:54 +02:00
Sebastian Huber
cffa5b7838 libblock: Use UTF-8 converter in media manager 2013-06-04 13:56:19 +02:00
Sebastian Huber
13bcb3e738 ramdisk: Fix device name generation 2013-03-22 15:10:37 +01:00
Sebastian Huber
71cf3e9d2f libblock: Do resource allocation in one place
All resource allocations take place in rtems_bdbuf_init() now.  After
rtems_bdbuf_init() no fatal errors can happen due to configuration
errors or resource limits.  This makes it easier to detect
configuration errors for users.
2013-02-21 10:50:04 +01:00
Joel Sherrill
b697bc6a44 cpukit: Use Consistent Beginning of Doxygen Group Notation
This is the result of a sed script which converts all uses
of @{ into a consistent form.
2013-01-10 17:06:47 -06:00
Alex Ivanov
3cf4031c19 Header File Doxygen Enhancement Task #1 2012-12-28 17:48:12 -06:00
Mathew Kallada
c5782a26b3 Header File Doxygen Enhancement Task #7 2012-12-28 11:17:49 -06:00
Mathew Kallada
9ab091e1e4 Header File Doxygen Enhancement Task #2 2012-12-28 10:36:55 -06:00
Sebastian Huber
f58fd9702e libblock: Use @brief in documentation 2012-12-21 20:28:24 +01:00
Jennifer Averett
e5e1d8f000 libblock: Doxygen Enhancement Task #1 corrections 2012-12-21 11:56:26 -06:00