You are here: Home / Projects / 
2024-10-04 - 00:32

The OSADL Toolbox

Little helper programs to make life easier when using Open Source software in products

For proper licensing of open source software, it is necessary to know whether the files form a combined work and, if so, whether at least one file of such a combined work may only be copied and distributed under the terms of a copyleft license. If all files are binary files and contain the so-called ELF data structure, this structure can be used to obtain information about which symbols are undefined and require an external file to be resolved and imported from it. The command line tool callgraph was developed for this purpose; it reads all files in specified directories, examines their ELF headers, and draws a recursive dependency graph of the files found. Originally written by Armijn Hemel, the callgraph tool has been extended by OSADL and made available to the public in an OSADL Git repository. A more detailed description and some sample graphs can be found here.

When a new version of a software package for which a final license clearing has already been performed is released and the associated product needs to be updated, the license clearing must be performed again. However, often only a small number of files are updated. Therefore, it would be helpful if there were a software that examines all the old and new files, check which ones have been changed or added, and copy these disjunct files to a new directory. This would make it possible to limit the work to the changed or added files in the new directory and reuse the licensing data of the remaining files that have not been changed. One such program is the Python script Disjunctify.py which is publicly available in the OSADL Git repository and described in more detail here.

Most Open Source licenses require that the license text and copyright notices be delivered to the recipient along with the software. This undoubtedly also applies in the event that Open Source software is copied to a user's computer when a web page is loaded and executed locally, as is regularly the case with software written in JavaScript, for example. Since it is not evident how this is best achieved, this application note describes a possible implementation and contains a practical realization.

To determine the response time of a selected device to asynchronous external signals, the OSADL latency measurement box is used. For this purpose, a signal is sent from the latency box to the tested device. This signal wakes up a user-space program that is waiting for data from the device. The user-space program then sends a signal back to the latency box to confirm receipt of the signal. The latency box records the time difference that elapses between sending the trigger signal to the device and receiving the acknowledgement from the device. This acquired measurement data is stored in a file on the latency box and can be retrieved from the latency box via the network or serial interface and subsequently evaluated.

 

The parallel port monitor can be useful especially in situations where a system is no longer responsive on normal input and output channels. It is connected via the parallel port, which can also be easily added to current systems via PCI or PCIe bus. If there is still some life left in a system, the four input channels allow to trigger various sysrq operations, while the output channels can be used to output the low-level kernel states.