Commit Graph

9 Commits

Author SHA1 Message Date
Andrew Hsieh
78175cbcc5 Don't use errno directly
errno in MIPS is macro for "*__errno)()".  Use of errno inside
WRAP(__errno)() cause infinite loop.  This may happen in other
wrapper functions which access errno.

Change all error to *REAL(__error)()

Change-Id: I1c09d84a58855bd7896fcd4e70f740b8a0f0b386
2013-03-19 18:06:30 -07:00
Andrew Hsieh
6433ec22b1 Use linker -Wl,--wrap=symbol
Linker --wrap option resolves to __wrap_symbol for undefined symbol.
During the compilation of host libportable.a, __HOST__ is defined
to rename all portable functions to  __wrap_symbol, and the
real function to __real_symbol.  This way libportable.a can be
validated at host w/o changes of user's source code.

See http://sourceware.org/binutils/docs/ld/Options.html

Change-Id: Idcbe53dd642536f3dc2be85a875f95535b9dc0b1
2013-03-18 21:55:39 -07:00
Pete Delaney
998548881e [MIPS] Fixed a bug and improved fcntl_portable.
Improved Logging, tweaked func names, fixed double mappings
of mips_command.

While debugging the LTP fcntl07* set of failures I modified
a few ALOGV() calls to make logging more helpful in
fcntl_cmd_pton().

Change-Id: Idc9a7c8dd27883dff1e555769d6a8e331f4fdeb9
Signed-off-by: Pete Delaney <piet.delaney@imgtec.com>
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
Signed-off-by: Paul Lind <paul.lind@imgtec.com>
2013-02-20 20:06:13 -08:00
Pete Delaney
c684613e19 [MIPS] Added support for file descriptor related system calls.
Specifically these functions are now supported:
    signalfd4(), eventfd(), timerfd_create(),
    pipe(), and inotify_init1()

Modified syscall_portable() to call signalfd4_portable(),
eventfd_portable(), eventfd2_portable(), and timerfd_create().
These system calls enable the read system calls to access
kernel data structures.

The signalfd4() enables read to return a signalfd_siginfo structure
which have the signal number and errno mapped until an execve().
This is similar to the maintaining a table of signal handlers to
map the signal numbers done earlier. This mapping is extended to
the process after an execve() by passing the final set of mapped
file descriptors via a pair of environment variables.

Disabling signal and file descriptor read mapping in parent
if the child would break the mapping algorithms.

This code passes at least all of the non-POSIX LTP tests,
including an updated LTP signalfd4 test that posts SIGNALS
and uses this read() mechanism to get signal info.

inotify_init1 is similar to signalfd(), timerfd() and other
filefd functions which map read() calls. Unlike signalfd(), and
similar to timerfd(), the reads don't appear to need to be mapped.

The members of the inotify_event structure appear to be generic.
The mask bits like IN_MOVE_FROM and IN_MOVE_TO are defined in
generic files. The LTP test in testcases/kernel/syscalls/inotify
test for the inotify_event structure being inotify_event structure
being read and does seem to check it contents being correct.

Change-Id: I3f2dcd4e33437ac953cd9f67f56dccc6ec6e5e6f
Signed-off-by: Pete Delaney <piet.delaney@imgtec.com>
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
Signed-off-by: Paul Lind <paul.lind@imgtec.com>
2013-02-20 20:05:19 -08:00
Pete Delaney
4977f77e79 [MIPS] Unify around a consistent *_ntop/*_pton style.
Unifying around the <class>_ntop() style;
changing ntop_*() and pton_* to *_ntop() and *_pton().

Also added portable versions of strerror() and strerror_r()
while updating the errno.c file.

Change-Id: I2a0f40963f293ef9387b0dbcb3426276d301a17c
Signed-off-by: Pete Delaney <piet.delaney@imgtec.com>
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
Signed-off-by: Paul Lind <paul.lind@imgtec.com>
2013-02-20 20:02:09 -08:00
Pete Delaney
2928edfab9 [MIPS] Tighten up code to fit within 100 characters lines.
File poll.c had a wide line and the reason for the asymmetric
mapping of the event flags wasn't obvious on my reviewing
this code. Seemed to justify adding some clarification.

Both signal.c and socket.c were using lengthy function names
for Portable <--> Native mappings. Switch to the newer *_ntop()
style in wide files and made the ALOGV() messages more useful.

Also changed mapping of portable SIGSTKFLT to native SIGEMT
while editing a wide line in the signal.c file.  MIPS has no
SIGSTKFLT signal, nor ARM a signal SIGEMT. Using SIGEMT as a
proxy for SIGSTKFLT_PORTABLE for Lib-Portable applications.
This makes the signal mapping reversible during signal handling.

Fixed ALOGV() Entry/Exit brackets to match.

Change-Id: I9a91992e67ab24322db608424bf69c47fad8e18d
Signed-off-by: Pete Delaney <piet.delaney@imgtec.com>
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
Signed-off-by: Paul Lind <paul.lind@imgtec.com>
2013-02-20 20:01:15 -08:00
Pete Delaney
8930ac5534 [MIPS] Expand TABS and remove redundant return parenthesis.
Also fixed syscall.c to use curly brackets in case
statements to be more like bionic.

Change-Id: I20ffab9a474a2132b47fb4e765966c956aab2aff
Signed-off-by: Pete Delaney <piet.delaney@imgtec.com>
Signed-off-by: Chris Dearman <chris.dearman@imgtec.com>
Signed-off-by: Paul Lind <paul.lind@imgtec.com>
2013-02-20 20:00:23 -08:00
Pete Delaney
b10b6f2baf [MIPS] Update Support for fcntl.
Change-Id: I743837793a84e6f4dbbc192b29b19a6eae78a5da
Signed-off-by: Pete Delaney  <piet@mips.com>
Signed-off-by: Chris Dearman <chris@mips.com>
2012-10-05 00:23:49 -07:00
Chao-Ying Fu
5f79ffb271 Support fcntl for MIPS with different cmd.
Change-Id: I8d180ab9e18d69f0fd2748ad317319b691a86f35
2012-08-20 18:08:30 -07:00