- 28 Nov, 2014 34 commits
-
-
Alessandro Rubini authored
Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
This allows other process to access port information without making several RPC calls. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
The stdout and stderr of the basic WR tools are piled to the "logger" process, to get actual logs saved, if so configured for. Thus, we should not reopen the output channels to /dev/null Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
This is the first step to move the "get_port_state" query to shared memory. The internal structures of hal_ports.c will be allocated in shared memory, so the calls to halexp_* will just convert the data, without context-switching to the hal process. I couldn't add the functions to libwr/hal_client.c where they belong, because the choice of using the same "halexp" names for local and remote calls would lead to duplicate symbol definitions when linking the hal (the hal process links libwr, but can't link hal_client.o). Thus, libwr/hal_shmem.c is created, to host the parts of hal/hal_ports.c that are needed to convert data. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
Signed-off-by: Alessandro Rubini <rubini@gnudd.com> Acked-by: Maciej Lipinski <maciej.lipinski@cern.ch>
-
Alessandro Rubini authored
Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
LOCK_STATE_* macros were defined locally and not used (only LOCK_STATE_NONE was used, but 0 is better since the relevant function says "returns 0 or 1"). Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
HAL_PORT_MODE_* were defined locally and never used. The code uses HEXP_PORT_MODE_* instead (defined in <hal/hal_exports.h> and used in several places). Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
After this commit, all symbols in hal_ports are of the form hal_port_* (all but one, that is not used and I'll remove it in another commit). I'm not smart enough to track the origin of the various names, so I need this. I need this especially in this file because I'm going to export stuff using shmem, to avoid a lot of context switches. Thus, the "private" structure hal_port_state is not a typedef any more, as a first step in becoming public. It doesn't make sense to have two almost-identical structures, where one is copied to the other one item at a time to deal with the minor differences. (It happened for some reason: I'm not complaining hard, but it's time to get rid of this). Unfortunately, two functions were called "halexp", and relied on a prototype shared by the RPC server (this file) and the RPC client. While the convention made sense at first, it now shows its limits, so the exported one is called hal_port_* like everything in the file, but for this I need to add structure names (but I left the typedef at this point, to avoid massive name changes around). If I didn't introduce bugs, the code is the same as it was. I did it one symbol at a time while build-checking each steps (and I even have the commits to track any error). Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
pps_gen.c had a missing semicolon because of this bug. Fix the macro to behave properly withing if/else. And fix the user, adding the missing semicolon. We all know that these two functions should be static inline, and the fpga base pointer should be void *, but that's for later. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
This header is almost obsolete, as we'll move to SDB soon. Meanwhile, sort out the tab/space mess and indent with spaces only, so it looks good to everybody (including greg who insists on one tab every 2 spaces -- which works for indentation, but not for for alignment at end-of-line). Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
We'd better use less CPU power to run the HAL, even if this shows down response times for management queries (until we move most of it to shmem). Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
The code was hardwired to /dev/ttyS2 and 115200 baud. So we are sure nobody is using it, and it actually can't be used at all. If needed, we know it's in the history. Signed-off-by: Alessandro Rubini <rubini@gnudd.com> Ackec-by: Grzegorz Daniluk <grzegorz.daniluk@cern.ch>
-
Alessandro Rubini authored
Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
The compiler noted already, by not generating code. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
I didn't take all suggestions by Lindent, I avoided to commit the stupid ones (when on separate hunks). This mainly changes the spacing of "if( condition)", spaces after commas in arguments, the placing of the pointer symbol and the placement of braces. I would have avoided the last item, but it's not simple. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
This is a semi-automatic pass. To work on this I need to have it in 80 columns, and sanely indented. This pass is not changing brace placement or whatever: it is just a "fill-region" in emacs plus manual split of strings and shortening of comments. You can "git diff --word-diff=color" to check. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
This allows private headers to be clearly private (in userspace/wrsw_hal/). rt_ipc.h is used by phytool too, so it is not private and is now in include/. As a side effect, remove -I../wrs_hal from makefile. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
To delay for less than 1ms (was: 10ms) we must busy-loop, because the kernel is jiffy-based. No way out of it. The implementation, however, was based on gettimeofday(), which means we couldn't really strace the hal process, as it appeared to only call gettimeofday all the time. This code uses a local software loop, after a calibration step of around 20ms (depends on CPU speed). Moreover, by calling usleep() for longer-than-1ms delays it doesn't use 100% cpu power during the initial led blinking. Now strace on the process shows what it really is doing (besides user-spac-only i2c accesses). Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
We don't need to print binary and get mad with static storage. If any, we print hex. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
shw_malloc and shw_free are not used (well, i2c_free used shw_free, but there is no associated alloc anywhere, so I removed it too). The idea of a "malloc-or-exit" kind of function is good, but we'd better make sense of things (and simplify where unused legacy remains) before finding and fixing all unlikely error paths. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
This is a completely automatic pass, before we start making order in this library (note: there is a missing semicolon in pps_gen.c:82 but it will be fixed in a later commit -- the bug is in the macro being called, so the missing semicolon is ok for the compiler). Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
This is the new IPC mechanism (not RPC) to pass port status and other status-like information among processes, to avoid lenghty RPC calls. Each WR process has 32k of shared space. Thanks to Adam for some fixes. Signed-off-by: Alessandro Rubini <rubini@gnudd.com> Signed-off-by: Adam Wujek <adam.wujek@cern.ch>
-
Alessandro Rubini authored
This changes the kernel configuration, in two ways: 1- It uses CONFIG_NOHZ, which enables Hight Resolution Timers Unfortunately this has no effect, as the timeevent device for AT91 doesn't support oneshot mode. This means that if you usleep(100) you'll wait 10ms. Thus, we can't remove the busy-looping in libwr/util.c . This is the output of my libstamp sample program: 0.003 -- stamping overhead 12.243 -- usleep 1 usec 10.005 -- usleep 1 usec 9.963 -- usleep 2 usec 10.037 -- usleep 5 usec 10.083 -- usleep 10 usec 9.905 -- usleep 100 usec 10.394 -- usleep 1000 usec 19.775 -- usleep 10000 usec 109.925 -- usleep 100000 usec 2- It moves CONFIG_HZ from 100 to 1000. Thus, we have 1000 timer interrupts per second. This means, in practice, that if you usleep(100) you wait 1ms. This costs around 2% of CPU power (measured by running a cpu-busy program before and after the change, in both cases after killing all processes), but makes stuff millisecond-grained instead of 10ms-grained. This is a benefit for the PTP daemon and everything uses timeouts in system calls. This is libstamp again: 0.003 -- stamping overhead 0.662 -- usleep 1 usec 0.869 -- usleep 1 usec 0.976 -- usleep 2 usec 0.951 -- usleep 5 usec 0.993 -- usleep 10 usec 0.999 -- usleep 100 usec 1.999 -- usleep 1000 usec 11.006 -- usleep 10000 usec 101.043 -- usleep 100000 usec Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
This updates binaries/wrboot-* to be more commented and complete. It also adds wrboot-install and wrboot-nand, that I personally used. As a side effect, "mem=64m" is removed by all command lines, as it has been properly autodetected for a few years now, so it is not needed any more. Documentation is updated too. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Grzegorz Daniluk authored
-
Alessandro Rubini authored
Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
- 20 Nov, 2014 2 commits
-
-
Alessandro Rubini authored
-
Adam Wujek authored
Also, fix Makefiles accordingly. Signed-off-by: Adam Wujek <adam.wujek@cern.ch>
-
- 19 Nov, 2014 4 commits
-
-
Alessandro Rubini authored
This commit makes no changes, as shown by "git diff -w" before committing, but blank spaces at end-of-line make my editor scream (because I'm pedanting in not pushing those to the kernel). Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
The header is not private to the library, wr_phytool uses it. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
The header is not private to the library: it is used by elsewhere. Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-