summaryrefslogtreecommitdiff
path: root/cpukit (follow)
AgeCommit message (Collapse)Author
2020-04-03config: Remove filesystem entry config optionsSebastian Huber
Remove the following undocumented configuration options: * CONFIGURE_FILESYSTEM_ENTRY_DOSFS * CONFIGURE_FILESYSTEM_ENTRY_FTPFS * CONFIGURE_FILESYSTEM_ENTRY_IMFS * CONFIGURE_FILESYSTEM_ENTRY_JFFS2 * CONFIGURE_FILESYSTEM_ENTRY_NFS * CONFIGURE_FILESYSTEM_ENTRY_RFS * CONFIGURE_FILESYSTEM_ENTRY_TFTPFS Update #3836.
2020-04-02libio: Remove RTEMS_FILESYSTEM_TYPE_MINIIMFSSebastian Huber
This type is unused. Do not mention non-existing CONFIGURE_FILESYSTEM_MINIIMFS.
2020-04-02rtems: Fix Doxygen commentSebastian Huber
2020-03-31config: Remove CONFIGURE_FILESYSTEM_DEVFSSebastian Huber
This filesystem no longer exists. Remove unused RTEMS_FILESYSTEM_TYPE_DEVFS. Update #3894.
2020-03-31ftpd: Remove superfluous definesSebastian Huber
These defines are not used and easily conflict with application code. They are also defined by the standard header file <arpa/ftp.h> if someone needs them.
2020-03-31ftpd: Fix return typesSebastian Huber
2020-03-31config: Remove BSP_DEFAULT_UNIFIED_WORK_AREASSebastian Huber
Do not undefine this unused BSP configuration option. This is a follow up of commit 92b33b8d09377feb14eb5a831ce242047c58d02b.
2020-03-23score: Document _TLS_AlignmentSebastian Huber
2020-03-23score: Fix size of TLS_Thread_control_blockSebastian Huber
On most architectures, the size of the thread-local storage TCB must be 8 bytes. Fix the definition for 64-bit targets.
2020-03-23conf: Improve evaluation of event recording optsSebastian Huber
Check for configuration errors earlier. Allow fatal dumps without the other extensions. Add some warnings. Update #3904.
2020-03-18record: Add rtems_record_dump()Sebastian Huber
Add rtems_record_dump_base64() and rtems_record_dump_base64_zlib(). Add CONFIGURE_RECORD_FATAL_DUMP_BASE64 and CONFIGURE_RECORD_FATAL_DUMP_BASE64_ZLIB configuration options. Update #3904.
2020-03-16rtems: Add rtems_put_char()Sebastian Huber
Update #3904.
2020-03-16score: Add _IO_Base64()Sebastian Huber
Update #3904.
2020-03-13libio: Robust file descriptor reference countingSebastian Huber
There was a race conditon in the reference counting of file descriptors during a close() operation. After the call to the close handler, the rtems_libio_free() function cleared the flags to zero. However, at this point in time there may still exist some holders of the file descriptor. With RTEMS_DEBUG enabled this could lead to failed assertions in rtems_libio_iop_drop(). Change the code to use only atomic read-modify-write operations on the rtems_libio_iop::flags.
2020-03-09imfs: Replace devfs with an IMFS specializationSebastian Huber
Add a simplified path evaluation function IMFS_eval_path_devfs() for a device only IMFS configuration. The code size can be further reduced by the application if it disables the support for legacy IO drivers via: #define CONFIGURE_IMFS_DISABLE_MKNOD #define CONFIGURE_IMFS_DISABLE_MKNOD_DEVICE Obsolete CONFIGURE_MAXIMUM_DEVICES. Remove BSP_MAXIMUM_DEVICES. Update #3894. Update #3898.
2020-03-09imfs: Simplify code generationSebastian Huber
Update #3894.
2020-03-09imfs: Remove unused handlersSebastian Huber
Update #3894.
2020-03-09imfs: Constify imfs_memfile_bytes_per_blockSebastian Huber
The CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK value is validated by <rtems/confdefs/libio.h>. Changing this value during runtime could lead to memory corruption. Update #3894.
2020-03-09imfs: Use _IMFS_get_time()Sebastian Huber
Update #3894.
2020-03-09libio: Constify some functionsSebastian Huber
2020-03-04console: Use IMFS_add_node() for simple task consSebastian Huber
Change license to BSD-2-Clause according to file history. Update #3053. Update #3894.
2020-03-04console: Use IMFS_add_node() for simple consoleSebastian Huber
Change license to BSD-2-Clause according to file history. Update #3053. Update #3894.
2020-03-04imfs: Add IMFS_add_node()Sebastian Huber
Update #3894.
2020-03-04imfs: Simplify IMFS_create_node()Sebastian Huber
Update #3894.
2020-03-04imfs: Remove IMFS_NODE_FLAG_NAME_ALLOCATEDSebastian Huber
Remove IMFS_NODE_FLAG_NAME_ALLOCATED and instead replace the node control in rename operations. This avoids a special case in the general node destruction which pulled in free(). Update #3894.
2020-03-04rtems: rtems_scheduler_get_processor_maximum()Sebastian Huber
In uniprocessor configurations, use compile-time constants for rtems_scheduler_get_processor_maximum() and rtems_scheduler_get_processor(). This helps compilers and static analyzers to deduce that some loop bodies are only executed once and some conditional statements have a fixed outcome (may improve code generation and reduce false positives). In SMP configurations, directly provide the internal implementation for performance reasons.
2020-03-04config: Remove <rtems/btimer.h> includeSebastian Huber
The use of CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER does not define anything, so remove the <rtems/btimer.h> include. Update #3875.
2020-03-03rtems: Add rtems_scheduler_map_priority_from_posix()Sebastian Huber
Update #3881.
2020-03-03rtems: Add rtems_scheduler_map_priority_to_posix()Sebastian Huber
Update #3881.
2020-03-02dtc: Update VERSIONSebastian Huber
2020-03-02libfdt: Allow exclusion of fdt_check_full()Simon Glass
This function is used to perform a full check of the device tree. Allow it to be excluded if all assumptions are enabled. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Message-Id: <20200220214557.176528-9-sjg@chromium.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02libfdt: Add support for disabling ordering check/fixupSimon Glass
Add a way to remove this check and the reordering code, which is unnecessary if the dtb is known to be correctly ordered. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Message-Id: <20200220214557.176528-8-sjg@chromium.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02libfdt: Add support for disabling version checksSimon Glass
Allow enabling FDT_ASSUME_LATEST to disable version checks. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Message-Id: <20200220214557.176528-7-sjg@chromium.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02libfdt: Add support for disabling rollback handlingSimon Glass
Allow enabling FDT_ASSUME_NO_ROLLBACK to disable rolling back after a failed operation. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Message-Id: <20200220214557.176528-6-sjg@chromium.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02libfdt: Add support for disabling sanity checksSimon Glass
Allow enabling ASSUME_VALID_INPUT to disable sanity checks on the device tree and the parameters to libfdt. This assumption covers that cases where the problem could be with either. Signed-off-by: Simon Glass <sjg@chromium.org> Message-Id: <20200220214557.176528-5-sjg@chromium.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02libfdt: Add support for disabling dtb checksSimon Glass
Support ASSUME_VALID_DTB to disable some sanity checks If we assume that the DTB itself is valid then we can skip some checks and save code space. Add various conditions to handle this. Signed-off-by: Simon Glass <sjg@chromium.org> Message-Id: <20200220214557.176528-4-sjg@chromium.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02Add a way to control the level of checks in the codeSimon Glass
Add a new ASSUME_MASK option, which allows for some control over the checks used in libfdt. With all assumptions enabled, libfdt assumes that the input data and parameters are all correct and that internal errors cannot happen. By default no assumptions are made and all checks are enabled. Signed-off-by: Simon Glass <sjg@chromium.org> Message-Id: <20200220214557.176528-3-sjg@chromium.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02libfdt: De-inline fdt_header_size()Simon Glass
There does not seem to be a strong reason to inline this function. Also we are about to add some extra code to it which will increase its size. Move it into fdt.c and use a simple declaration in libfdt.h Signed-off-by: Simon Glass <sjg@chromium.org> Message-Id: <20200220214557.176528-2-sjg@chromium.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02libfdt: Correct prototype for fdt_ro_probe_()David Gibson
This function returns an int32_t, however the prototype in libfdt_internal.h shows it returning an int. We haven't caught this before because they're the same type on nearly all platforms this gets built on. Apparently it's not the case on FreeRTOS, so someone hit this mismatch building for that platform. Reported-by: dharani kumar <dharanikumarsrvn@gmail.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02libfdt.h: add explicit cast from void* to uint8_t* in fdt(32|64)_stLuc Michel
Including libfdt.h in a C++ project fails during compilation with recent version of GCC or Clang. This simple example: extern "C" { #include <libfdt.h> } int main(void) { return 0; } leads to the following errors with GCC 9.1.0: /usr/include/libfdt.h: In function ‘void fdt32_st(void*, uint32_t)’: /usr/include/libfdt.h:139:16: error: invalid conversion from ‘void*’ to ‘uint8_t*’ {aka ‘unsigned char*’} [-fpermissive] 139 | uint8_t *bp = property; | ^~~~~~~~ | | | void* /usr/include/libfdt.h: In function ‘void fdt64_st(void*, uint64_t)’: /usr/include/libfdt.h:163:16: error: invalid conversion from ‘void*’ to ‘uint8_t*’ {aka ‘unsigned char*’} [-fpermissive] 163 | uint8_t *bp = property; | ^~~~~~~~ | | | void* This commit adds an explicit cast to uint8_t* to fix this issue. Signed-off-by: Luc Michel <luc.michel@greensocs.com> Message-Id: <20190910104824.1321594-1-luc.michel@greensocs.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02libfdt: Allow #size-cells of 0David Gibson
c12b2b0c20eb "libfdt: fdt_address_cells() and fdt_size_cells()" introduced a bug as it consolidated code between the helpers for getting #address-cells and #size-cells. Specifically #size-cells is allowed to be 0, and is frequently found so in practice for /cpus. IEEE1275 only requires implementations to handle 1..4 for #address-cells, although one could make a case for #address-cells == #size-cells == 0 being used to represent a bridge with a single port. While we're there, it's not totally obvious that the existing implicit cast of a u32 to int will give the correct results according to strict C, although it does work in practice. Straighten that up to cast only after we've made our range checks. Reported-by: yonghuhaige via https://github.com/dgibson/dtc/issues/28 Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02libfdt: Tweak data handling to satisfy CoverityDavid Gibson
In libfdt we often sanity test fdt_totalsize(fdt) fairly early, then trust it (but *only* that header field) for the remainder of our work. However, Coverity gets confused by this - it sees the byteswap in fdt32_ld() and assumes that means it is coming from an untrusted source everytime, resulting in many tainted data warnings. Most of these end up with logic in fdt_get_string() as the unsafe destination for this tainted data, so let's tweak the logic there to make it clearer to Coverity that this is ok. We add a sanity test on fdt_totalsize() to fdt_probe_ro_(). Because the interface allows bare ints to be used for offsets, we already have the assumption that totalsize must be 31-bits or less (2GiB would be a ludicrously large fdt). This makes this more explicit. We also make fdt_probe_ro() return the size for convenience, and change the logic in fdt_get_string() to keep it in a local so that Coverity can see that it has already been bounds-checked. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02libfdt: Replace GPL/BSD boilerplate/reference with SPDX tagsRob Herring
Replace instances of dual GPLv2 or BSD license boilerplate with SPDX tags. Signed-off-by: Rob Herring <robh@kernel.org> Message-Id: <20190620211944.9378-3-robh@kernel.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02libfdt: Add FDT_CREATE_FLAG_NO_NAME_DEDUP flag that trades size for speedNicholas Piggin
Searching for duplicate names scales O(n^2) with the number of names added to a fdt, which can cause a noticable slowdown with larger device trees and very slow CPU cores. Add FDT_CREATE_FLAG_NO_NAME_DEDUP that allow the caller to trade fdt size for speed in the creation process. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Message-Id: <20190509094122.834-4-npiggin@gmail.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02libfdt: Introduce fdt_create_with_flags()Nicholas Piggin
There is a need to be able to specify some options when building an FDT with the SW interface. This can be accomplished with minimal changes by storing intermediate data in the fdt header itself, in fields that are not otherwise needed during the creation process and can be set by fdt_finish(). The fdt.magic field is already used exactly this way, as a state to check with callers that the FDT has been created but not yet finished. fdt.version and fdt.last_comp_version are used to make room for more intermediate state. These are adjacent and unused during the building process. last_comp_version is not yet used for intermediate state, but it is zeroed and treated as used, so as to allow future growth easily. A new interface, fdt_create_with_flags() is added, which takes 32-bit flag value to control creation. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Message-Id: <20190509094122.834-3-npiggin@gmail.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02libfdt: Ensure fdt_add_property frees allocated name string on failureNicholas Piggin
If fdt_add_property or fdt_property_placeholder fail after allocating a string for the name, they return without freeing that string. This does not change the structure of the tree, but in very specific cases it could lead to undesirable space consumption. Fix this by rolling back the string allocation in this situation. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Message-Id: <20190509094122.834-2-npiggin@gmail.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02libfdt: Make fdt_get_max_phandle() an inlineDavid Gibson
It's now a trivial wrapper around fdt_find_max_phandle() so we might as well inline it. We also remove it from the versioning linker script. Theoretically, that's a breaking ABI change except that we haven't yet released a version with it exposed in the shared object, so we can get away with it. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02libfdt: Add phandle generation helperThierry Reding
The new fdt_generate_phandle() function can be used to generate a new, unused phandle given a specific device tree blob. The implementation is somewhat naive in that it simply walks the entire device tree to find the highest phandle value and then returns a phandle value one higher than that. A more clever implementation might try to find holes in the current set of phandle values and fill them. But this implementation is relatively simple and works reliably. Also add a test that validates that phandles generated by this new API are indeed unique. Signed-off-by: Thierry Reding <treding@nvidia.com> Message-Id: <20190326153302.17109-3-thierry.reding@gmail.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02libfdt: Add new maximum phandle lookup functionThierry Reding
The fdt_get_max_phandle() function has some shortcomings. On one hand it returns just a uint32_t which means to check for the "negative" error code a caller has to explicitly check against the error code (uint32_t)-1. In addition, the -1 is the only error code that can be returned, so a caller cannot tell the difference between the various failures. Fix this by adding a new fdt_find_max_phandle() function that returns an error code on failure and 0 on success, just like other APIs, and stores the maximum phandle value in an output argument on success. This also refactors fdt_get_max_phandle() to use the new function. Add a note pointing out that the new fdt_find_max_phandle() function should be preferred over fdt_get_max_phandle(). Signed-off-by: Thierry Reding <treding@nvidia.com> Message-Id: <20190326153302.17109-1-thierry.reding@gmail.com> [dwg: Reword for some inaccuracies in the commit message] Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-03-02libfdt: add fdt_append_addrrange()AKASHI Takahiro
This function will append an address range property using parent node's "#address-cells" and "#size-cells" properties. It will be used in implementing kdump with kexec_file_load system call at linux kernel for arm64 once it is merged into kernel tree. Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org> Message-Id: <20190327061552.17170-2-takahiro.akashi@linaro.org> [dwg: Correct a SEGV error in the testcase] Signed-off-by: David Gibson <david@gibson.dropbear.id.au>