POSIX-results: Difference between revisions

From Yocto Project
Jump to navigationJump to search
 
(559 intermediate revisions by 2 users not shown)
Line 1: Line 1:
==Introduction==
==Introduction==
This page records the POSIX test results of Yocto 1.2. You can get more informations from [https://wiki.yoctoproject.org/wiki/Posix_result POSIX test overall on Yocto]. The test suite is from ltp and version 20110915. Six platforms are included: qemu-arm qemu-ppc qemu-mips beagleboard mpc8315rdb routerstation.
This page records the POSIX test results of Yocto for current version. History POSIX test results have been moved to  https://wiki.yoctoproject.org/wiki/POSIX_History_Results. You can get more informations from [https://wiki.yoctoproject.org/wiki/Posix_result POSIX test overall on Yocto].  
There are 1794 test cases in total, only failed items are list here.
 
All POSIX test cases can be get at
[http://ltp.git.sourceforge.net/git/gitweb.cgi?p=ltp/ltp.git;a=tree;f=testcases/open_posix_testsuite POSIX git repository].


The online POSIX specification could be viewed at [http://pubs.opengroup.org/onlinepubs/007904975/mindex.html IEEE Std 1003.1, 2004 Edition].
The online POSIX specification could be viewed at [http://pubs.opengroup.org/onlinepubs/007904975/mindex.html IEEE Std 1003.1, 2004 Edition].


==Results and analysis==
The POSIX test suite is from ltp. All POSIX test cases can be get at
The results of groups SIG SEM THR TMR MSG TPS MEM are listed. Conclusion of some test cases have been given.  
[http://ltp.git.sourceforge.net/git/gitweb.cgi?p=ltp/ltp.git;a=tree;f=testcases/open_posix_testsuite POSIX git repository].


Value of clumn "status":
Test POSIX on following platforms:
*beaglebone
*mpc8315rdb
*edgerouter
*genericx86-64


'''Bug''': it is a bug and the test case needs to be fixed.
There are 1794 test cases in total, only failed items are list here.


'''Ignore''': the case is not appropriate for the hardware or linux
=== Result Codes ===
These informations are from POSIX test suit Documentation/HOWTO_ResultCodes.


'''POSIX''': that test case is in development, that causes the test fails
The PTS result codes are:


===SIG===
#define PTS_PASS        0
#define PTS_FAIL        1
#define PTS_UNRESOLVED  2
#define PTS_UNSUPPORTED 4
#define PTS_UNTESTED    5


====1.2 M2 RC1====
A brief discussion of each of these follows:
{|border="1"
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
|-
|| sigaction/16-1 || Ignore || qemu-mips routerstation ||  "test not present" || NO SIGSTKFLT on mips platform. Signals are defined in /usr/include/bits/signum.h  || n/a
|}


====1.2 M1 RC2====
PTP_PASS        Used when the test executes fully with no problems and passes.
{|border="1"
PTP_FAIL        Used when the test executes fully, but fails.
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
  PTP_UNRESOLVED Used when the test was blocked from fully completing and
|-
                the pass/failure results cannot be determined.
|| sigaltstack/9-1 || || sugarbay blacksand ||  conformance/interfaces/sigaltstack/9-1: execution: UNRESOLVED ||  || n/a
  PTP_UNSUPPORTED Used if the test is for a conditional feature that is
|-
                not implemented.
|| sigset/7-1 ||  || sugarbay blacksand ||  conformance/interfaces/sigset/7-1: execution: UNRESOLVED  ||  || n/a  
  PTP_UNTESTED    Used when a feature does not have a test associated
|-
                with it because:
|| sigset/6-1 ||  || sugarbay blacksand ||  conformance/interfaces/sigset/6-1: execution: UNRESOLVED  ||  || n/a  
                - The test is just a stub and doesn't do anything
|-
                - The test is only partially complete and can't really
|| sigqueue/9-1  ||  || blacksand ||  conformance/interfaces/sigqueue/9-1: execution: UNRESOLVED  ||  || n/a  
                  finish the test
|-
                - The test is complete in some cases, but certain things
|| sigaction/16-1            || Ignore || qemu-mips routerstation ||  "test not present" || NO SIGSTKFLT on mips platform. Signals are defined in /usr/include/bits/signum.h || n/a
                  can happen that leave the test incompleteWhen these
|}
                  happen, it's PTP_UNTESTED.


===SEM===
For every failed case which returns '''PTP_FAIL''' there is a item in https://bugzilla.yoctoproject.org to follow. For other cases which don't return PTP_PASS find the root cause.


====1.2 M2 RC1====
==Results and analysis==
{|border="1"
The results of groups SIG SEM THR TMR MSG TPS MEM are listed. Conclusion of some test cases have been given.  
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
|-
|| sem_init/7-1  ||  ignore  || beagleboard routerstation mpc8315e sugarbay blacksand || can't test: There is no constraint on SEM_NSEMS_MAX || _SC_SEM_NSEMS_MAX is not supported by sysconf(). In implement it check whether SEM_NSEMS_MAX is defined, then if defined return SEM_NSEMS_MAX, otherwise return -1. No SEM_NSEMS_MAX defined in Yocto Ubuntu and Fedora || n/a
|}


====1.2 M1 RC2====
Values of clumn "status" descript the current status of the case. Some keywords include:
{|border="1"  
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
|-
|| sem_post/8-1 ||  || blacksand ||  conformance/interfaces/sem_post/8-1: execution: FAILED ||  || n/a
|-
|| sem_init/7-1  ||  ignore  || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || can't test: There is no constraint on SEM_NSEMS_MAX || _SC_SEM_NSEMS_MAX is not supported by sysconf(). In implement it check whether SEM_NSEMS_MAX is defined, then if defined return SEM_NSEMS_MAX, otherwise return -1. No SEM_NSEMS_MAX defined in Yocto Ubuntu and Fedora || n/a
|}


===THR===
'''Bug''': it is a bug and the test case needs to be fixed.


====1.2 M2 RC1====
'''Ignore''': the case is not appropriate for the hardware or linux
{|border="1"
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''


|-
'''POSIX''': that test case is in development, that causes the test fails
|| pthread_cond_broadcast/1-2 || Ignore      || beagleboard    || HUNG - "timeout" || Create too many threads and cause kernel to kill some of them, so the case block on getting mutex.
 
Log in dmesg:
 
Out of memory: Kill process 25300 (1-2.run-test) score 8 or sacrifice child
Killed process 858 (1-2.run-test) total-vm:26200kB, anon-rss:8236kB, file-rss:4kB
|| n/a
 
|-
|| pthread_create/1-6        || POSIX    || beagleboard routerstation mpc8315e sugarbay || || testcase create NCPU=4 threads running with a high priority with the same sched policy policy and one with a low-priority. The low-priority thread should not run until the other threads stop running, unless the machine has more than NCPU processors. Redefine NCPU = sysconf(_SC_NPROCESSORS_CONF), testcase should pass || n/a
 
|-
|| pthread_create/10-1        || POSIX/Removed  || beagleboard  routerstation blacksand sugarbay|| Segmentation fault || test case use an uninitialized attributes object to make case pthread_create() segmentation fault then catch the signal. But the uninitialized object is NOT invalid to pthread_create() all the time || n/a


|-
===Current Milestone (3.1 RC2 build)===
|| pthread_create/14-1       ||          || routerstation || Segmentation fault || test failed 6/10 times || n/a
'''Yocto 3.1 RC2 build''' with POSIX test suite version '''20200120'''.


|-
====AIO====
|| pthread_mutex_lock/3-1    || POSIX (send patch)  || beagleboard routerstation mpc8315e || User defined signal 2 || Signals are sended before install signal handler|| n/a


|-
|| pthread_rwlock_rdlock/2-1  || Ignore(unsupport)    || beagleboard routerstation mpc8315e sugarbay blacksand || Main thread read lock 'rwlock' with high priority. Child thread1 write lock 'wrlock' with medium priority will block. child thread2 read lock 'rwlock' with low priority should block because a high priority write lock is waiting, but read lock doesn't block.  || This test case is to test option '''Thread Execution Scheduling''' of pthread rwlock. But eglibc/libc don't support this option. They provide a '''__flags''' option to identify perfer 'read lock' or read lock, and the default is 'read lock' first. A Non-portable api pthread_rwlockattr_setkind_np() is provided to set this value. The test case is not supported. ||


|-
|| pthread_rwlock_rdlock/2-2  ||    Ignore(unsupport)  || beagleboard routerstation mpc8315e sugarbay blacksand ||Main thread read lock 'rwlock' with high priority. Child thread1 write lock 'wrlock' with low priority will block. child thread2 read lock 'rwlock' with same low priority should block because a same priority write lock is waiting, but read lock doesn't block.  || See pthread_rwlock_rdlock/2-1 ||
|-
|| pthread_rwlock_unlock/3-1  ||  Ignore(unsupport)    || beagleboard routerstation mpc8315e sugarbay blacksand || Main thread write lock 'rwlock' with high priority. Child thread1 write lock 'wrlock' with medium priority will block. Child thread2 read lock 'wrlock' with same mediumpriority. Child thread3 write lock 'wrlock' with low priority. When main thread unlock 'rwlock', child thread1 get the 'wrlock'. When child thread1 unlock 'rwlock', child thread2 should get the read lock 'wrlock' because it has higher priority than child thread3. But it is the child thread3 who get the 'wrlock'.  || See pthread_rwlock_rdlock/2-1 ||
|}
====1.2 M1 RC2====
{|border="1"  
{|border="1"  
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
|-
|| aio_error_3-1 || '''Not A Bug''' || genericx86-64 edgerouter beaglebone || conformance/interfaces/aio_error/3-1: execution: UNTESTED ||
This test tries to call aio_error with argument aiocbp which does not point at a control block for an asynchronous I/O request, and expect error EINVAL.


The POSIX spec says about aio_error:
The aio_error( ) function may fail if:
[EINVAL]  The aiocbp argument does not refer to an asynchronous operation whose return status has not yet been retrieved.
||
[https://bugzilla.yoctoproject.org/show_bug.cgi?id=2666 Yocto 2666]
|-
|-
|| pthread_cond_init/2-2 ||   || sugarbay    || conformance/interfaces/pthread_cond_init/2-2: execution: FAILED  ||   || n/a
|| aio_read_9-1 || '''Not A Bug''' || genericx86-64 edgerouter beaglebone  || conformance/interfaces/aio_read/9-1: execution: UNSUPPORTED ||  
ltp commit 91d8c0c85c97366a7ec4ee08ef3b3e7a38661ac8 will check the limit of aio queue, if there is no limit, the case is not supported and return '''UNSUPPORTED'''.
Test case try to overflow the aio queue, but not quit sure the critical value on different OS.
||
|-
|-
|| pthread_cond_init/1-3 ||   || sugarbay    || conformance/interfaces/pthread_cond_init/1-3: execution: HUNG  ||   || n/a
|| aio_return_2-1 || '''Not A Bug''' || genericx86-64 edgerouter beaglebone  || conformance/interfaces/aio_return/2-1: execution: UNTESTED ||
In specification, second call to aio_return() return -1 is a kind of possibility, depends on implementation.
In glibc the return value is same as first return.
||[https://bugzilla.yoctoproject.org/show_bug.cgi?id=2665 Yocto 2665]
|-
|-
|| pthread_mutex_getprioceiling/1-1 ||     || sugarbay blacksand || conformance/interfaces/pthread_mutex_getprioceiling/1-1: execution: FAILED || || n/a
|| aio_return_3-2 || '''Not A Bug''' || genericx86-64 edgerouter beaglebone  || conformance/interfaces/aio_return/3-2: execution: UNTESTED ||
Same with aio_return/2-1
||[https://bugzilla.yoctoproject.org/show_bug.cgi?id=2665 Yocto 2665]
|-
|-
|| pthread_mutex_init/5-3      ||           || sugarbay || conformance/interfaces/pthread_mutex_init/5-3: execution: SIGNALED || || n/a
|| aio_return_4-1 || '''Not A Bug''' || genericx86-64 edgerouter beaglebone  || conformance/interfaces/aio_return/4-1: execution: UNTESTED ||
call aio_return with with argument aiocbp which does not point at a control block for an asynchronous I/O request, and expect error EINVAL. But this is optional.
||
[https://bugzilla.yoctoproject.org/show_bug.cgi?id=2665 Yocto 2665]
|-
|-
|| pthread_cancel/5-2      ||           || blacksand || conformance/interfaces/pthread_cancel/5-2: execution: UNRESOLVED || || n/a
|| aio_suspend_5-1 || POSIX  || genericx86-64 edgerouter beaglebone  || conformance/interfaces/aio_suspend/5-1: execution: UNSUPPORTED ||  
'''''Stub Case'''''
Test case is a stub
||
|-
|-
|| pthread_cond_broadcast/1-2 || Ignore      || qemu-arm beagleboard    || HUNG - "timeout" || Create too many threads and cause kernel to kill some of them, so the case block on getting mutex.  
|| aio_write_7-1 || '''Not A Bug''' || genericx86-64 edgerouter beaglebone  || conformance/interfaces/aio_write/7-1: execution: UNSUPPORTED ||  
 
ltp commit b56638a7a8ae9cd37e5698de3186dc3cb1434cd8 will check the limit of aio queue, if there is no limit, the case is not supported and return '''UNSUPPORTED'''.
Log in dmesg:
Test case try to overflow the aio queue, but const value 1024 is not enough
 
||
Out of memory: Kill process 25300 (1-2.run-test) score 8 or sacrifice child
Killed process 858 (1-2.run-test) total-vm:26200kB, anon-rss:8236kB, file-rss:4kB
|| n/a
 
|-
|-
|| pthread_create/1-6        || POSIX    || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay || || testcase create NCPU=4 threads running with a high priority with the same sched policy policy and one with a low-priority. The low-priority thread should not run until the other threads stop running, unless the machine has more than NCPU processors. Redefine NCPU = sysconf(_SC_NPROCESSORS_CONF), testcase should pass || n/a
|}
 
|-
|| pthread_create/10-1        || POSIX/Removed  || qemu-arm beagleboard qemu-mips routerstation || Segmentation fault || test case use an uninitialized attributes object to make case pthread_create() segmentation fault then catch the signal. But the uninitialized object is NOT invalid to pthread_create() all the time || n/a
 
|-
|| pthread_create/14-1        ||          || routerstation || Segmentation fault || test failed 6/10 times || n/a
 
|-
|| pthread_mutex_lock/3-1    || POSIX (send patch)  || qemu-arm beagleboard routerstation qemu-mips mpc8315e || User defined signal 2 || Signals are sended before install signal handler|| n/a


|-
====SIG====
|| pthread_rwlock_rdlock/2-1  || Ignore(unsupport)    || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || Main thread read lock 'rwlock' with high priority. Child thread1 write lock 'wrlock' with medium priority will block. child thread2 read lock 'rwlock' with low priority should block because a high priority write lock is waiting, but read lock doesn't block.  || This test case is to test option '''Thread Execution Scheduling''' of pthread rwlock. But eglibc/libc don't support this option. They provide a '''__flags''' option to identify perfer 'read lock' or read lock, and the default is 'read lock' first. A Non-portable api pthread_rwlockattr_setkind_np() is provided to set this value. The test case is not supported. ||


|-
|| pthread_rwlock_rdlock/2-2  ||    Ignore(unsupport)  || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand ||Main thread read lock 'rwlock' with high priority. Child thread1 write lock 'wrlock' with low priority will block. child thread2 read lock 'rwlock' with same low priority should block because a same priority write lock is waiting, but read lock doesn't block.  || See pthread_rwlock_rdlock/2-1 ||


|-
|| pthread_rwlock_unlock/3-1  ||  Ignore(unsupport)    || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || Main thread write lock 'rwlock' with high priority. Child thread1 write lock 'wrlock' with medium priority will block. Child thread2 read lock 'wrlock' with same mediumpriority. Child thread3 write lock 'wrlock' with low priority. When main thread unlock 'rwlock', child thread1 get the 'wrlock'. When child thread1 unlock 'rwlock', child thread2 should get the read lock 'wrlock' because it has higher priority than child thread3. But it is the child thread3 who get the 'wrlock'.  || See pthread_rwlock_rdlock/2-1 ||
|}


=== TMR ===
====1.2 M1 RC2====
{|border="1"  
{|border="1"  
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
|-
|-
|| clock_getcpuclockid/6-1 ||  || sugarbay blacksand ||conformance/interfaces/clock_getcpuclockid/6-1: execution: UNRESOLVED ||   ||
|| n/a ||  || || || ||  
|-
|-  
|}
|}


====1.1====
====SEM====
 
{|border="1"  
{|border="1"  
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
|-
|-
|| timer_getoverrun/3-1       || '''POSIX''' || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return UNTESTED || N/A
|| sem_init_7-1   || '''Unsupported''' || edgerouter genericx86-64 beaglebone || conformance/interfaces/sem_init/sem_init_7-1: execution: UNTESTED
  [17:07:31]sysconf(_SC_SEM_NSEMS_MAX) = -1
  [17:07:31]File ../../../conformance/interfaces
  /sem_init/7-1.c cannot test: There is no
  constraint on SEM_NSEMS_MAX


|-
Then return '''UNTESTED'''
|| timer_getoverrun/2-3      ||  Bug  || qemu-arm beagleboard routerstation || || "WR: Change CONFIG_HZ from 100 to 250 can solve this."  The root cause is that these platform don't provide '''HIGH RESOLUTION TIMER'''. The value on platforms which test case can pass is only 1 nanosecond. But on qemuarm is 10000000 nanoseconds, on routerstation is 4000250 nanoseconds. After set
  CONFIG_HIGH_RES_TIMER=y
for '''routerstation''' (CONFIG_HZ=250 is already set), test case passes.


These 2 kernel configurations for qemuarm are not permitted.
|| In glibc, sysconf() is implemented in sysdeps/posix/sysconf.c. When pass _SC_SEM_NSEMS_MAX to sysconf(), it checks whether SEM_NSEMS_MAX is defined, then if defined return SEM_NSEMS_MAX, otherwise return -1.  


|| [http://bugzilla.pokylinux.org/show_bug.cgi?id=1827 Bug 1827]
No SEM_NSEMS_MAX defined in Yocto same as in Ubuntu and Fedora, so the case fails.


|-
It return UNTESTED, we don't need care it.
|| clock_getcpuclockid/5-1    || Ignore  || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || clock_getcpuclockid(1, ..) passed unexpectedly || Permission issue. When call clock_getcpuclockid() as a unpriviledge user to get process 'init' cpu time, it succeeds but expect fails with EPERM.


This is not supported by Linux. In man page, it addresses EPERM "''' does not occur on Linux unless the kernel does not support obtaining the per-process  CPU-time clock of another process.'''".
||
 
|}
clock_getcpuclockid() is implemented in eglibc source file libc/sysdeps/unix/sysv/linux/clock_getcpuclockid.c, call system call clock_getres() without permission check


|| n/a
====THR====
|}


===MSG===
====1.2 M1 RC2====
None


====1.1====
{|border="1"  
{|border="1"  
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
|-
|-
|| mq_timedreceive/5-2      || '''Ignore''' || qemu-ppc qemu-mips mpc8315e subarbay blacksand || || The time() can not specifies an abs_timeout to mq_timedreceiver () for preempt_rt kernel || n/a
|| pthread_barrier_destroy_2-1 || Unsupported || genericx86-64 edgerouter beaglebone || conformance/interfaces/pthread_barrier_destroy/pthread_barrier_destroy_2-1: execution: UNSUPPORTED || The case becomes invalid after glibc-2.23 ||
 
|-
|-
||mq_timedreceive/10-2      || '''Bug''' || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e subarbay blacksand ||
|| pthread_cond_destroy_speculative_4-1 || Unsupported || beaglebone edgerouter || conformance/interfaces/pthread_cond_destroy/speculative/pthread_cond_destroy_speculative_4-1: execution: UNSUPPORTED ||  ||
  FAIL: the validity of
  abs_timeout is checked
  Test FAILED
 
|| Pass a invalid parameter and when no need to wait mq_timedreceive should not check the timeout value. This is described in IEEE Std 1003.1-2008 POSIX Base Specifications, Issue 7, line 43787-43889.
 
In linux implementation, mq_timedreceive is defined in ipc/mqueue.c. It will call prepare_timeout() ==> timespec_valid() to validate the parameter abs_timeout before to get the message queue info.
 
  || n/a
 
|-
|-
|| mq_timedsend/5-1          ||   POSIX/Patch send          || qemu-ppc qemu-mips ||  
|| pthread_mutex_init_speculative_5-2 || Unsupported || beaglebone edgerouter || conformance/interfaces/pthread_mutex_init/speculative/pthread_mutex_init_speculative_5-2: execution: UNSUPPORTED || ||
  Child never interrupted
  mq_send() didn't appear
  to complete
  Test FAILED
|| It fails random, because test case expect parent process sleep first and then child send signal to notify the parent, then the test pass. But the parent doesn't have chance to sleep before the child send the signal. || n/a
 
|-
|-
|| mq_close/5-1               || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
|| pthread_mutexattr_gettype_speculative_3-1 || Untested || beaglebone edgerouter || conformance/interfaces/pthread_mutexattr_gettype/speculative/pthread_mutexattr_gettype_speculative_3-1: execution: UNTESTED ||  ||
 
|-
|| mq_open/4-1               || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand ||  || Just print something and then return || n/a
 
|-
|-
|| mq_open/10-1              || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
|| pthread_cond_broadcast_1-2 || '''Limitted to memory''' || edgerouter || conformance/interfaces/pthread_cond_broadcast/1-2: execution: UNTESTED ||  
 
The case create 1000 process, and check the system memory. If system available memory size less than it requires, the case exit with UNTESTED.
When run single case on routerstation, it passed. But fails to run single case even just after reboot.
||
|-
|-
|| mq_open/14-1             || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
|| pthread_rwlock_rdlock_2-1 || Unsupport by glibc || edgerouter genericx86-64 beaglebone || conformance/interfaces/pthread_rwlock_rdlock/pthread_rwlock_rdlock_2-1: execution: FAILED ||
 
Main thread read lock 'rwlock' with high priority. Child thread1 write lock 'wrlock' with medium priority will block. child thread2 read lock 'rwlock' with low priority should block because a high priority write lock is waiting, but read lock doesn't block. This test case is to test option '''Thread Execution Scheduling''' of pthread rwlock. But glibc/libc don't support this option. They provide a rwlock->__data.'''__flags''' option to identify perfer 'read lock' or write lock, and the default is 'read lock' first. So second reader can get the lock when a higher priority writer is waiting for the lock.
A Non-portable api pthread_rwlockattr_setkind_np() is provided to set this value. The test case is not supported.
||
|-
|-
|| mq_open/17-1              || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
|| pthread_rwlock_rdlock_2-|| Unsupport by glibc  || edgerouter genericx86-64 beaglebone || conformance/interfaces/pthread_rwlock_rdlock/pthread_rwlock_rdlock_2-2: execution: FAILED ||
 
Main thread read lock 'rwlock' with high priority. Child thread1 write lock 'wrlock' with low priority will block. child thread2 read lock 'rwlock' with same low priority should block because a same priority write lock is waiting, but read lock doesn't block. See pthread_rwlock_rdlock/2-1
||
|-
|-
|| mq_open/22-1             || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
|| pthread_rwlock_unlock_4-1 || Unsupported || genericx86-64 edgerouter beaglebone || cconformance/interfaces/pthread_rwlock_unlock/pthread_rwlock_unlock_4-1: execution: UNSUPPORTED || Unlocking uninitialized rwlock is undefined on Linux ||
 
|-
|-
|| mq_open/24-1              || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
|| pthread_rwlock_unlock_4-2 || Unsupported || genericx86-64 edgerouter beaglebone || cconformance/interfaces/pthread_rwlock_unlock/pthread_rwlock_unlock_4-2: execution: UNSUPPORTED || Unlocking uninitialized rwlock is undefined on Linux ||
 
|-
|-
|| mq_open/25-1             || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
|| pthread_rwlock_unlock_3-1 || Unsupport by glibc || edgerouter genericx86-64 beaglebone || conformance/interfaces/pthread_rwlock_unlock/pthread_rwlock_unlock_3-1: execution: FAILED ||
 
Main thread write lock 'rwlock' with high priority. Child thread1 write lock 'wrlock' with medium priority will block. Child thread2 read lock 'wrlock' with same mediumpriority. Child thread3 write lock 'wrlock' with low priority. When main thread unlock 'rwlock', child thread1 get the 'wrlock'. When child thread1 unlock 'rwlock', child thread2 should get the read lock 'wrlock' because it has higher priority than child thread3. But it is the child thread3 who get the 'wrlock'. See pthread_rwlock_rdlock/2-1
||  
|-
|-
|| mq_open/28-1              || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || ||Just print something and then return || n/a
|}
 
|-
|| mq_open/30-1              || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a


|-
====TMR====
|| mq_send/6-1              || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a


{|border="1"
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
|-
|-
||mq_timedsend/6-1           || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
|| clock_1-1 || || genericx86-64 || conformance/interfaces/clock/clock_1-1: execution: FAILED || ||
 
|-
|-
||mq_timedsend/17-1         || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
|| clock_getcpuclockid_5-1 || '''Implement related''' || edgerouter genericx86-64 beaglebone || conformance/interfaces/clock_getcpuclockid/clock_getcpuclockid_5-1: execution: UNTESTED
 
  clock_getcpuclockid(1, ..) passed unexpectedly
|| Case tests permission. When call clock_getcpuclockid() as a unpriviledge user to get process 'init' cpu time, it succeeds but expect fails with EPERM.
This is '''not supported''' by Linux. In man page, it addresses EPERM "Specified as an '''optional error''' in POSIX.1-2001; '''Does not occur on Linux unless the kernel does not support obtaining the per-process  CPU-time clock of another process.'''".
||
|-
|-
||mq_unlink/2-3              || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
|}
|}


===TPS===
====MSG====
====1.2 M1 RC2====
 
{|border="1"  
{|border="1"  
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
|-
|-
|| sched_setparam/9-1  ||  || blacksand ||  conformance/interfaces/sched_setparam/9-1: execution: FAILED ||   || n/a
|| n/a ||  || ||  || ||  
|-
|-
|| sched_setscheduler/17-5  ||  || sugarbay blacksand ||  conformance/interfaces/sched_setscheduler/17-5: execution: UNRESOLVED  ||  || n/a
|-
|}
|}


====1.1====  
====TPS====
 
{|border="1"  
{|border="1"  
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
|-
|-
||sched_getparam/6-1        || '''Ignore'''      || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || sched_getparam is a system call, and defined in kernel/sched.c:L5510. It calls security_task_getscheduler() ==> security_ops->task_getscheduler() to perform security check. Default security policy is "Unix Discretionary Access Control". Its task_getscheduler() refer to cap_task_getscheduler() and doesn't perform any permission check.
||sched_get_priority_max_1-3 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_get_priority_max/sched_get_priority_max_1-3: execution: UNSUPPORTED || Schedule policy SCHED_SPORADIC is not supported by linux ||  
WR: A permission test. On Linux, the kernel makes no check on
user permission to call this API. So basically we don't know
on what condition a system should return EPERM.
It is implementation defined.
||
 
|-
|-
||sched_getscheduler/7-1    || '''Ignore'''  || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Same with sched_getparam/6-1
||sched_get_priority_min_1-3 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_get_priority_min/sched_get_priority_min_1-3: execution: UNSUPPORTED || Schedule policy SCHED_SPORADIC is not supported by linux ||  
  WR: A permission test. On Linux, the kernel
  makes no check on user permission to call
  this API. So basically we don't know on what
  condition a system should return EPERM.
  It is implementation defined.
 
|| n/a
 
|-
|-
||sched_yield/1-1         || Bug / Fixed || qemu-arm qemu-mips routerstation qemu-ppc mpc8315e beagleboard || || SIGINT is trapped by bin/run-test.sh || n/a
||sched_getparam_6-1 || '''Not Supported''' || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_getparam/6-1: execution: UNTESTED
 
Testing with user deamon (euid, uid) = (1, 1)
The function sched_getparam has successed.
||  
This case try to call sched_getparam as non-root user to get scheduling parameters of process with pid 0.
It is a system call and implemented in kernel source sched/core.c. In SYSCALL_DEFINE2(sched_getparam, ...) it calls security_task_getscheduler() to check the permission.
For default security operations, security_task_getscheduler() is a stub function and just return 0.
In the manual of sched_getparam about return value:
EPERM  The calling process does not have appropriate privileges (Linux: does not have the CAP_SYS_NICE capability).
||
|-
|-
||sched_get_priority_max/1-3 || Ignore      || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
||sched_getscheduler_7-1 || '''Not Supportted''' || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_getscheduler/7-1: execution: UNTESTED
 
Testing with user deamon (uid: 1)
|-
The function sched_getscheduler has successed.
||sched_get_priority_min/1-3 || Ignore      || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
|| Similiar with sched_getparam/6-1
 
||
 
|-
||sched_getscheduler/2-1     || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
 
|-
||sched_setparam/3-1         || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
 
|-
||sched_setparam/6-1       || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
 
|-
|-
||sched_setparam/7-1       || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
||sched_setparam_20-1 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setparam/sched_setparam_20-1: execution: UNSUPPORTED || PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux ||  
 
|-
|-
||sched_setparam/8-1       || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
||sched_setparam_21-1 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setparam/sched_setparam_21-1: execution: UNSUPPORTED || PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux ||  
 
|-
|-
||sched_setparam/12-1 || Ignore     || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
||sched_setparam_21-2 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setparam/sched_setparam_21-2: execution: UNSUPPORTED || PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux ||  
 
|-
|-
||sched_setparam/13-1 || Ignore     || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
||sched_setparam_23-2 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setparam/sched_setparam_23-2: execution: UNSUPPORTED || PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux ||  
 
|-
|-
||sched_setparam/14-1 || Ignore     || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
||sched_setparam_23-3 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setparam/sched_setparam_23-3: execution: UNSUPPORTED || PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux ||  
 
|-
|-
||sched_setparam/15-1 || Ignore     || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
||sched_setparam_23-4 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setparam/sched_setparam_23-4: execution: UNSUPPORTED || PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux ||  
 
|-
|-
||sched_setparam/16-1 || Ignore     || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
||sched_setparam_23-5 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setparam/sched_setparam_23-5: execution: UNSUPPORTED || PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux ||  
 
|-
|-
||sched_setparam/17-1        || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
||sched_setparam_25-2 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setparam/sched_setparam_25-2: execution: UNSUPPORTED || PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux ||  
 
|-
|-
||sched_setparam/18-1        || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
||sched_setparam_25-3 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setparam/sched_setparam_25-3: execution: UNSUPPORTED || PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux ||  
 
|-
|-
||sched_setparam/19-1        || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
||sched_setparam_25-4 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setparam/sched_setparam_25-4: execution: UNSUPPORTED || PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux ||  
 
|-
|-
||sched_setparam/20-1        || Ignore       || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux || n/a
||sched_setscheduler_17-2 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setscheduler/sched_setscheduler_17-2: execution: UNSUPPORTED || Schedule policy SCHED_SPORADIC is not supported by linux ||
 
|-
|-
||sched_setparam/21-1        || Ignore       || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux || n/a
||sched_setscheduler_17-3 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setscheduler/sched_setscheduler_17-3: execution: UNSUPPORTED || Schedule policy SCHED_SPORADIC is not supported by linux ||
 
|-
|-
||sched_setparam/21-2        || Ignore       || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux || n/a
||sched_setscheduler_17-4 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setscheduler/sched_setscheduler_17-4: execution: UNSUPPORTED || Schedule policy SCHED_SPORADIC is not supported by linux ||
 
|-
|-
||sched_setparam/23-2 || Ignore     || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
||sched_setscheduler_15-1 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setscheduler/sched_setscheduler_15-1: execution: UNSUPPORTED || Schedule policy SCHED_SPORADIC is not supported by linux ||
 
|-
|-
|| sched_setparam/23-3      || Ignore     || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
||sched_setscheduler_15-2 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setscheduler/sched_setscheduler_15-2: execution: UNSUPPORTED || Schedule policy SCHED_SPORADIC is not supported by linux ||
 
|-
|-
||sched_setparam/23-4        || Ignore     || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
||sched_setscheduler_19-2 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setscheduler/sched_setscheduler_19-2: execution: UNSUPPORTED || Schedule policy SCHED_SPORADIC is not supported by linux ||
 
|-
|-
||sched_setparam/23-5      || Ignore     || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
||sched_setscheduler_19-3 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setscheduler/sched_setscheduler_19-3: execution: UNSUPPORTED || Schedule policy SCHED_SPORADIC is not supported by linux ||
 
 
|-
|-
||sched_setparam/25-2      || Ignore     || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
||sched_setscheduler_19-4 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setscheduler/sched_setscheduler_19-4: execution: UNSUPPORTED || Schedule policy SCHED_SPORADIC is not supported by linux ||
 
 
|-
|-
||sched_setparam/25-3      || Ignore     || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
||sched_setscheduler_22-1 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setscheduler/sched_setscheduler_22-1: execution: UNSUPPORTED || Schedule policy SCHED_SPORADIC is not supported by linux ||
 
 
|-
|-
||sched_setparam/25-4      || Ignore     || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
||sched_setscheduler_22-2 || Ignore || edgerouter genericx86-64 beaglebone || conformance/interfaces/sched_setscheduler/sched_setscheduler_22-2: execution: UNSUPPORTED || Schedule policy SCHED_SPORADIC is not supported by linux ||
 
 
|-
|-
||sched_setscheduler/2-1          || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
|}
 
 
|-
||sched_setscheduler/5-1        || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
 
 
|-
||sched_setscheduler/6-1        || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
 
 
|-
||sched_setscheduler/7-1        || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
 
 
|-
||sched_setscheduler/9-1        || Ignore      || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
 
|-
||sched_setscheduler/10-1        || Ignore      || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
 
|-
||sched_setscheduler/11-1        || Ignore      || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
 
|-
||sched_setscheduler/12-1        || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
 
 
|-
||sched_setscheduler/13-1        || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
 
|-
||sched_setscheduler/14-1        || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
 
|-
||sched_setscheduler/15-1        || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
 
|-
||sched_setscheduler/15-2        || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
 
|-
||sched_setscheduler/17-2      || Ignore      || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
 
|-
||sched_setscheduler/17-3      || Ignore      || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
 
|-
||sched_setscheduler/17-4      || Ignore      || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
 
|-
||sched_setscheduler/19-2      || Ignore      || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
 
|-
||sched_setscheduler/19-3      || Ignore      || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
 
|-
||sched_setscheduler/19-4      || Ignore      || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Schedule policy SCHED_SPORADIC is not supported by linux || n/a
 
|-
||sched_setscheduler/22-1        || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a


|-
====MEM====
||sched_setscheduler/22-2        || POSIX          || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || Just print something and then return || n/a
|}


===MEM===
====1.2 M1 RC2====
{|border="1"  
{|border="1"  
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
|-
|-
|| mlockall/3-|| || sugarbay blacksand || conformance/interfaces/mlockall/3-7: execution: UNRESOLVED ||  || n/a
|| mmap_31-1 || '''Not Supported''' || genericx86-64 edgerouter || conformance/interfaces/mmap/mmap_31-1: execution: UNSUPPORTED ||
|-
This case is NOT supported by Linux. Test parameters length and offset for mmap() are too large. In function get_unmapped_area(), it checks that length should less than TASK_SIZE, otherwise it returns -ENOMEM. TASK_SIZE value differs on different platforms.
|}
||
 
====1.1====
Note: from LTP/POSIX maintainer Cyril say: "At least the mmap/31-1, mmap/28-1, mmap/27-1, mmap/24-2, mmap/11-4 and
mmap/11-5 are known to fail sometimes and most likely are coded
incorrecly."
 
Ref:
http://sourceforge.net/mailarchive/forum.php?thread_name=4EFBC16E.9040102%40windriver.com&forum_name=ltp-list
 
So these cases should exclude from test list.
 
 
{|border="1"
|| '''POSIX cases'''|| '''status''' || '''platforms''' || '''error msg''' || '''analysis''' ||'''bugzilla'''
|-
|-
|| mmap/11-4                   || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand ||  
|| mmap_11-4 || '''Not Supported''' || edgerouter genericx86-64 beaglebone || conformance/interfaces/mmap/mmap_11-4: execution: UNTESTED
pa: 0x400fb000  
  pa: 0x400fb000  
 
  pa_2: 0x40115000  
pa_2: 0x40115000  
  Modification of the partial page
 
  at the end of an object is written out
Modification of the partial page at the end of an object is written out  
|| This case maps a file with length of 1/2 * page_size, then write char 'b' to next byte of 1/2 * page_size. Then try to re-mmap() the file and expect the byte next to of 1/2 * page_size should not be character 'b'.  
|| Test case map a file with size of 1/2 * page_size, then write char 'b' to next byte of 1/2 * page_size. Then try to re-mmap() the file and expect the byte next to of 1/2 * page_size should not be character 'b'. Test on all platforms are failed. The reason is after first mmap(), the mapped page for the file is cached in page cache. When do the 2nd or 3rd mmap() still get the same mapped page.  
Test on all platforms are failed. The root cause is that after first mmap(), the mapped page for the file is cached in page cache. When do the 2nd or 3rd mmap() still get the same mapped page.  
 
The mapped page is cached. This case is not supported by Linux.
The mapped page is cached.
 
mmap() is a system call and implemented by mmap2(). Then the call sequence is mmap2() ==>  sys_mmap_pgoff() ==> do_mmap_pgoff() ==> mmap_region() ==> file->f_op->mmap(). In ext3 file system, file->f_op->mmap() point to generic_file_mmap(). In generic_file_mmap(), assign the '''Page Fault Exception Handler''' to filemap_fault(). When access the Virtual Memory Area, page fault will occur and the run filemap_fault(). In filemap_fault(), kernel run find_get_page() to search the physical page in the page cache.  
mmap() is a system call and implemented by mmap2(). Then the call sequence is mmap2() ==>  sys_mmap_pgoff() ==> do_mmap_pgoff() ==> mmap_region() ==> file->f_op->mmap(). In ext3 file system, file->f_op->mmap() point to generic_file_mmap(). In generic_file_mmap(), assign the '''Page Fault Exception Handler''' to filemap_fault(). When access the Virtual Memory Area, page fault will occur and the run filemap_fault(). In filemap_fault(), kernel run find_get_page() to search the physical page in the page cache.  
|| n/a
||
 
|-
|-
|| mmap/11-5                    || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || Modification of the partial page at the end of an object is written out  || Same with mmap/11-4, and this test case is to test share memory, so file->f_op->mmap() point to shm_fault() in ipc/shm.c, then it call shmem_fault() ==> shmem_getpage() ==> shmem_getpage_gfp() ==> find_lock_page(). In find_lock_page() it will search the desired pagecache page. || n/a
|| shm_open_39-1 || '''LTP''' || edgerouter genericx86-64 beaglebone || conformance/interfaces/shm_open/shm_open_39-1: execution: UNTESTED || Glibc 2.19 restricts shm_open and shm_unlink to SHMDIR: http://sourceware.org/git/?p=glibc.git;a=commit;h=5d30d853295a5fe04cad22fdf649c5e0da6ded8c Then if the file name is too long, shm_open will return EINVAL, not ENAMETOOLONG
 
||
|-
|-
|| mmap/27-1                    || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || eglibc has define macro MAP_FIXED, and test case check MAP_FIXED defined then quit with PTS_UNTESTED || n/a
|| shm_open_39-2 || '''LTP''' || edgerouter genericx86-64 beaglebone || conformance/interfaces/shm_open/shm_open_39-2: execution: UNTESTED || Glibc 2.19 restricts shm_open and shm_unlink to SHMDIR: http://sourceware.org/git/?p=glibc.git;a=commit;h=5d30d853295a5fe04cad22fdf649c5e0da6ded8c Then if the file name is too long, shm_open will return EINVAL, not ENAMETOOLONG
 
||
|-
|-
|| mmap/28-1                   || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || || test mmap() with length 2 timed file size expect fail with errno ENXIO( No such device or address) but successed. || n/a
|| shm_unlink_10-1 || '''LTP''' || edgerouter genericx86-64 beaglebone || conformance/interfaces/shm_unlink/shm_unlink_10-1: execution: UNTESTED || Glibc 2.19 restricts shm_open and shm_unlink to SHMDIR: http://sourceware.org/git/?p=glibc.git;a=commit;h=5d30d853295a5fe04cad22fdf649c5e0da6ded8c  Then if the file name is too long, shm_unlink will return ENOENT, not ENAMETOOLONG
 
||
|-
|-
|| mmap/31-1                    || POSIX || qemu-arm qemu-ppc mpc8315e beagleboard sugarbay blacksand ||
|| shm_unlink_10-2 || '''LTP''' || edgerouter genericx86-64 beaglebone || conformance/interfaces/shm_unlink/shm_unlink_10-2: execution: UNTESTED || Glibc 2.19 restricts shm_open and shm_unlink to SHMDIR: http://sourceware.org/git/?p=glibc.git;a=commit;h=5d30d853295a5fe04cad22fdf649c5e0da6ded8c Then if the file name is too long, shm_unlink will return ENOENT, not ENAMETOOLONG
 
||
off: fffff000, len: fffff000
 
expect EOVERFLOW but get other error: Cannot allocate memory
 
|| Parameters lenth and offset for mmap() are too large. Case 24-2 with same length expects mmap() failed with ENOMEM.
 
In function get_unmapped_area(), it checks len should less than TASK_SIZE, otherwise it returns -ENOMEM. TASK_SIZE value on different platforms
beagleboard    0xC0000000 - 0x01000000 = 0xBF000000
mpc8315e      0xc0000000
routerstation  0x7fff8000UL
sugarbay      0xffff880000000000
    || n/a         
 
|-
|| shm_open/23-1                || Ignore  ||  qemu-ppc  || HUNG || qemu-ppc is too slow to fork and schedule, parent process create 1000 child processes and then wait children quit and then it time out. Limited to hardware. || n/a
 
|-
|| shm_open/2-1                || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand ||  || test code just return PTS_UNTESTED and do nothing || n/a
|-
|| shm_open/3-1 || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand ||  || test code just return PTS_UNTESTED and do nothing || n/a
 
|-
|| shm_open/6-1                || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand ||  || test code just return PTS_UNTESTED and do nothing || n/a
 
|-
|| shm_open/7-1                || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand || ||  test code just return PTS_UNTESTED and do nothing || n/a
 
|-
|| shm_open/9-1                || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand ||  || test code just return PTS_UNTESTED and do nothing || n/a
 
|-
|| shm_open/10-1                || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand ||  || test code just return PTS_UNTESTED and do nothing || n/a
 
|-
|| shm_open/12-1                || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand ||  || test code just return PTS_UNTESTED and do nothing || n/a
 
|-
|| shm_open/19-1                || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand ||  || test code just return PTS_UNTESTED and do nothing || n/a
 
|-
|| shm_open/24-1                || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand ||  ||test code just return PTS_UNTESTED and do nothing || n/a
 
|-
|| shm_open/27-1                || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand ||  || test code just return PTS_UNTESTED and do nothing || n/a
 
|-
|| shm_open/29-1                || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand ||  || test code just return PTS_UNTESTED and do nothing || n/a
 
|-
|| shm_open/36-1                || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand ||  || test code just return PTS_UNTESTED and do nothing || n/a
 
|-
|-
|| shm_open/42-1                || POSIX || qemu-arm beagleboard qemu-mips routerstation qemu-ppc mpc8315e sugarbay blacksand ||  || test code just return PTS_UNTESTED and do nothing || n/a
|}
|}

Latest revision as of 04:36, 9 April 2020

Introduction

This page records the POSIX test results of Yocto for current version. History POSIX test results have been moved to https://wiki.yoctoproject.org/wiki/POSIX_History_Results. You can get more informations from POSIX test overall on Yocto.

The online POSIX specification could be viewed at IEEE Std 1003.1, 2004 Edition.

The POSIX test suite is from ltp. All POSIX test cases can be get at POSIX git repository.

Test POSIX on following platforms:

  • beaglebone
  • mpc8315rdb
  • edgerouter
  • genericx86-64

There are 1794 test cases in total, only failed items are list here.

Result Codes

These informations are from POSIX test suit Documentation/HOWTO_ResultCodes.

The PTS result codes are:

#define PTS_PASS        0
#define PTS_FAIL        1
#define PTS_UNRESOLVED  2
#define PTS_UNSUPPORTED 4
#define PTS_UNTESTED    5

A brief discussion of each of these follows:

PTP_PASS        Used when the test executes fully with no problems and passes.
PTP_FAIL        Used when the test executes fully, but fails.
PTP_UNRESOLVED  Used when the test was blocked from fully completing and
                the pass/failure results cannot be determined.
PTP_UNSUPPORTED Used if the test is for a conditional feature that is
                not implemented.
PTP_UNTESTED    Used when a feature does not have a test associated
                with it because:
                - The test is just a stub and doesn't do anything
                - The test is only partially complete and can't really
                  finish the test
                - The test is complete in some cases, but certain things
                  can happen that leave the test incomplete.  When these
                  happen, it's PTP_UNTESTED.

For every failed case which returns PTP_FAIL there is a item in https://bugzilla.yoctoproject.org to follow. For other cases which don't return PTP_PASS find the root cause.

Results and analysis

The results of groups SIG SEM THR TMR MSG TPS MEM are listed. Conclusion of some test cases have been given.

Values of clumn "status" descript the current status of the case. Some keywords include:

Bug: it is a bug and the test case needs to be fixed.

Ignore: the case is not appropriate for the hardware or linux

POSIX: that test case is in development, that causes the test fails

Current Milestone (3.1 RC2 build)

Yocto 3.1 RC2 build with POSIX test suite version 20200120.

AIO

POSIX cases status platforms error msg analysis bugzilla
aio_error_3-1 Not A Bug genericx86-64 edgerouter beaglebone conformance/interfaces/aio_error/3-1: execution: UNTESTED

This test tries to call aio_error with argument aiocbp which does not point at a control block for an asynchronous I/O request, and expect error EINVAL.

The POSIX spec says about aio_error: The aio_error( ) function may fail if: [EINVAL] The aiocbp argument does not refer to an asynchronous operation whose return status has not yet been retrieved.

Yocto 2666

aio_read_9-1 Not A Bug genericx86-64 edgerouter beaglebone conformance/interfaces/aio_read/9-1: execution: UNSUPPORTED

ltp commit 91d8c0c85c97366a7ec4ee08ef3b3e7a38661ac8 will check the limit of aio queue, if there is no limit, the case is not supported and return UNSUPPORTED. Test case try to overflow the aio queue, but not quit sure the critical value on different OS.

aio_return_2-1 Not A Bug genericx86-64 edgerouter beaglebone conformance/interfaces/aio_return/2-1: execution: UNTESTED

In specification, second call to aio_return() return -1 is a kind of possibility, depends on implementation. In glibc the return value is same as first return.

Yocto 2665
aio_return_3-2 Not A Bug genericx86-64 edgerouter beaglebone conformance/interfaces/aio_return/3-2: execution: UNTESTED

Same with aio_return/2-1

Yocto 2665
aio_return_4-1 Not A Bug genericx86-64 edgerouter beaglebone conformance/interfaces/aio_return/4-1: execution: UNTESTED

call aio_return with with argument aiocbp which does not point at a control block for an asynchronous I/O request, and expect error EINVAL. But this is optional.

Yocto 2665

aio_suspend_5-1 POSIX genericx86-64 edgerouter beaglebone conformance/interfaces/aio_suspend/5-1: execution: UNSUPPORTED

Stub Case Test case is a stub

aio_write_7-1 Not A Bug genericx86-64 edgerouter beaglebone conformance/interfaces/aio_write/7-1: execution: UNSUPPORTED

ltp commit b56638a7a8ae9cd37e5698de3186dc3cb1434cd8 will check the limit of aio queue, if there is no limit, the case is not supported and return UNSUPPORTED. Test case try to overflow the aio queue, but const value 1024 is not enough

SIG

POSIX cases status platforms error msg analysis bugzilla
n/a

SEM

POSIX cases status platforms error msg analysis bugzilla
sem_init_7-1 Unsupported edgerouter genericx86-64 beaglebone conformance/interfaces/sem_init/sem_init_7-1: execution: UNTESTED
 [17:07:31]sysconf(_SC_SEM_NSEMS_MAX) = -1
 [17:07:31]File ../../../conformance/interfaces
 /sem_init/7-1.c cannot test: There is no 
 constraint on SEM_NSEMS_MAX

Then return UNTESTED

In glibc, sysconf() is implemented in sysdeps/posix/sysconf.c. When pass _SC_SEM_NSEMS_MAX to sysconf(), it checks whether SEM_NSEMS_MAX is defined, then if defined return SEM_NSEMS_MAX, otherwise return -1.

No SEM_NSEMS_MAX defined in Yocto same as in Ubuntu and Fedora, so the case fails.

It return UNTESTED, we don't need care it.

THR

POSIX cases status platforms error msg analysis bugzilla
pthread_barrier_destroy_2-1 Unsupported genericx86-64 edgerouter beaglebone conformance/interfaces/pthread_barrier_destroy/pthread_barrier_destroy_2-1: execution: UNSUPPORTED The case becomes invalid after glibc-2.23
pthread_cond_destroy_speculative_4-1 Unsupported beaglebone edgerouter conformance/interfaces/pthread_cond_destroy/speculative/pthread_cond_destroy_speculative_4-1: execution: UNSUPPORTED
pthread_mutex_init_speculative_5-2 Unsupported beaglebone edgerouter conformance/interfaces/pthread_mutex_init/speculative/pthread_mutex_init_speculative_5-2: execution: UNSUPPORTED
pthread_mutexattr_gettype_speculative_3-1 Untested beaglebone edgerouter conformance/interfaces/pthread_mutexattr_gettype/speculative/pthread_mutexattr_gettype_speculative_3-1: execution: UNTESTED
pthread_cond_broadcast_1-2 Limitted to memory edgerouter conformance/interfaces/pthread_cond_broadcast/1-2: execution: UNTESTED

The case create 1000 process, and check the system memory. If system available memory size less than it requires, the case exit with UNTESTED. When run single case on routerstation, it passed. But fails to run single case even just after reboot.

pthread_rwlock_rdlock_2-1 Unsupport by glibc edgerouter genericx86-64 beaglebone conformance/interfaces/pthread_rwlock_rdlock/pthread_rwlock_rdlock_2-1: execution: FAILED

Main thread read lock 'rwlock' with high priority. Child thread1 write lock 'wrlock' with medium priority will block. child thread2 read lock 'rwlock' with low priority should block because a high priority write lock is waiting, but read lock doesn't block. This test case is to test option Thread Execution Scheduling of pthread rwlock. But glibc/libc don't support this option. They provide a rwlock->__data.__flags option to identify perfer 'read lock' or write lock, and the default is 'read lock' first. So second reader can get the lock when a higher priority writer is waiting for the lock. A Non-portable api pthread_rwlockattr_setkind_np() is provided to set this value. The test case is not supported.

pthread_rwlock_rdlock_2-2 Unsupport by glibc edgerouter genericx86-64 beaglebone conformance/interfaces/pthread_rwlock_rdlock/pthread_rwlock_rdlock_2-2: execution: FAILED

Main thread read lock 'rwlock' with high priority. Child thread1 write lock 'wrlock' with low priority will block. child thread2 read lock 'rwlock' with same low priority should block because a same priority write lock is waiting, but read lock doesn't block. See pthread_rwlock_rdlock/2-1

pthread_rwlock_unlock_4-1 Unsupported genericx86-64 edgerouter beaglebone cconformance/interfaces/pthread_rwlock_unlock/pthread_rwlock_unlock_4-1: execution: UNSUPPORTED Unlocking uninitialized rwlock is undefined on Linux
pthread_rwlock_unlock_4-2 Unsupported genericx86-64 edgerouter beaglebone cconformance/interfaces/pthread_rwlock_unlock/pthread_rwlock_unlock_4-2: execution: UNSUPPORTED Unlocking uninitialized rwlock is undefined on Linux
pthread_rwlock_unlock_3-1 Unsupport by glibc edgerouter genericx86-64 beaglebone conformance/interfaces/pthread_rwlock_unlock/pthread_rwlock_unlock_3-1: execution: FAILED

Main thread write lock 'rwlock' with high priority. Child thread1 write lock 'wrlock' with medium priority will block. Child thread2 read lock 'wrlock' with same mediumpriority. Child thread3 write lock 'wrlock' with low priority. When main thread unlock 'rwlock', child thread1 get the 'wrlock'. When child thread1 unlock 'rwlock', child thread2 should get the read lock 'wrlock' because it has higher priority than child thread3. But it is the child thread3 who get the 'wrlock'. See pthread_rwlock_rdlock/2-1

TMR

POSIX cases status platforms error msg analysis bugzilla
clock_1-1 genericx86-64 conformance/interfaces/clock/clock_1-1: execution: FAILED
clock_getcpuclockid_5-1 Implement related edgerouter genericx86-64 beaglebone conformance/interfaces/clock_getcpuclockid/clock_getcpuclockid_5-1: execution: UNTESTED
 clock_getcpuclockid(1, ..) passed unexpectedly 
Case tests permission. When call clock_getcpuclockid() as a unpriviledge user to get process 'init' cpu time, it succeeds but expect fails with EPERM.

This is not supported by Linux. In man page, it addresses EPERM "Specified as an optional error in POSIX.1-2001; Does not occur on Linux unless the kernel does not support obtaining the per-process CPU-time clock of another process.".

MSG

POSIX cases status platforms error msg analysis bugzilla
n/a

TPS

POSIX cases status platforms error msg analysis bugzilla
sched_get_priority_max_1-3 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_get_priority_max/sched_get_priority_max_1-3: execution: UNSUPPORTED Schedule policy SCHED_SPORADIC is not supported by linux
sched_get_priority_min_1-3 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_get_priority_min/sched_get_priority_min_1-3: execution: UNSUPPORTED Schedule policy SCHED_SPORADIC is not supported by linux
sched_getparam_6-1 Not Supported edgerouter genericx86-64 beaglebone conformance/interfaces/sched_getparam/6-1: execution: UNTESTED

Testing with user deamon (euid, uid) = (1, 1) The function sched_getparam has successed.

This case try to call sched_getparam as non-root user to get scheduling parameters of process with pid 0. It is a system call and implemented in kernel source sched/core.c. In SYSCALL_DEFINE2(sched_getparam, ...) it calls security_task_getscheduler() to check the permission. For default security operations, security_task_getscheduler() is a stub function and just return 0. In the manual of sched_getparam about return value: EPERM The calling process does not have appropriate privileges (Linux: does not have the CAP_SYS_NICE capability).

sched_getscheduler_7-1 Not Supportted edgerouter genericx86-64 beaglebone conformance/interfaces/sched_getscheduler/7-1: execution: UNTESTED

Testing with user deamon (uid: 1) The function sched_getscheduler has successed.

Similiar with sched_getparam/6-1
sched_setparam_20-1 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setparam/sched_setparam_20-1: execution: UNSUPPORTED PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux
sched_setparam_21-1 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setparam/sched_setparam_21-1: execution: UNSUPPORTED PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux
sched_setparam_21-2 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setparam/sched_setparam_21-2: execution: UNSUPPORTED PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux
sched_setparam_23-2 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setparam/sched_setparam_23-2: execution: UNSUPPORTED PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux
sched_setparam_23-3 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setparam/sched_setparam_23-3: execution: UNSUPPORTED PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux
sched_setparam_23-4 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setparam/sched_setparam_23-4: execution: UNSUPPORTED PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux
sched_setparam_23-5 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setparam/sched_setparam_23-5: execution: UNSUPPORTED PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux
sched_setparam_25-2 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setparam/sched_setparam_25-2: execution: UNSUPPORTED PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux
sched_setparam_25-3 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setparam/sched_setparam_25-3: execution: UNSUPPORTED PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux
sched_setparam_25-4 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setparam/sched_setparam_25-4: execution: UNSUPPORTED PTHREAD_SCOPE_PROCESS for pthread_attr_setscope() is not supported by linux
sched_setscheduler_17-2 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setscheduler/sched_setscheduler_17-2: execution: UNSUPPORTED Schedule policy SCHED_SPORADIC is not supported by linux
sched_setscheduler_17-3 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setscheduler/sched_setscheduler_17-3: execution: UNSUPPORTED Schedule policy SCHED_SPORADIC is not supported by linux
sched_setscheduler_17-4 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setscheduler/sched_setscheduler_17-4: execution: UNSUPPORTED Schedule policy SCHED_SPORADIC is not supported by linux
sched_setscheduler_15-1 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setscheduler/sched_setscheduler_15-1: execution: UNSUPPORTED Schedule policy SCHED_SPORADIC is not supported by linux
sched_setscheduler_15-2 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setscheduler/sched_setscheduler_15-2: execution: UNSUPPORTED Schedule policy SCHED_SPORADIC is not supported by linux
sched_setscheduler_19-2 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setscheduler/sched_setscheduler_19-2: execution: UNSUPPORTED Schedule policy SCHED_SPORADIC is not supported by linux
sched_setscheduler_19-3 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setscheduler/sched_setscheduler_19-3: execution: UNSUPPORTED Schedule policy SCHED_SPORADIC is not supported by linux
sched_setscheduler_19-4 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setscheduler/sched_setscheduler_19-4: execution: UNSUPPORTED Schedule policy SCHED_SPORADIC is not supported by linux
sched_setscheduler_22-1 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setscheduler/sched_setscheduler_22-1: execution: UNSUPPORTED Schedule policy SCHED_SPORADIC is not supported by linux
sched_setscheduler_22-2 Ignore edgerouter genericx86-64 beaglebone conformance/interfaces/sched_setscheduler/sched_setscheduler_22-2: execution: UNSUPPORTED Schedule policy SCHED_SPORADIC is not supported by linux

MEM

POSIX cases status platforms error msg analysis bugzilla
mmap_31-1 Not Supported genericx86-64 edgerouter conformance/interfaces/mmap/mmap_31-1: execution: UNSUPPORTED

This case is NOT supported by Linux. Test parameters length and offset for mmap() are too large. In function get_unmapped_area(), it checks that length should less than TASK_SIZE, otherwise it returns -ENOMEM. TASK_SIZE value differs on different platforms.

mmap_11-4 Not Supported edgerouter genericx86-64 beaglebone conformance/interfaces/mmap/mmap_11-4: execution: UNTESTED
 pa: 0x400fb000 
 pa_2: 0x40115000 
 Modification of the partial page
 at the end of an object is written out
This case maps a file with length of 1/2 * page_size, then write char 'b' to next byte of 1/2 * page_size. Then try to re-mmap() the file and expect the byte next to of 1/2 * page_size should not be character 'b'.

Test on all platforms are failed. The root cause is that after first mmap(), the mapped page for the file is cached in page cache. When do the 2nd or 3rd mmap() still get the same mapped page. The mapped page is cached. This case is not supported by Linux. mmap() is a system call and implemented by mmap2(). Then the call sequence is mmap2() ==> sys_mmap_pgoff() ==> do_mmap_pgoff() ==> mmap_region() ==> file->f_op->mmap(). In ext3 file system, file->f_op->mmap() point to generic_file_mmap(). In generic_file_mmap(), assign the Page Fault Exception Handler to filemap_fault(). When access the Virtual Memory Area, page fault will occur and the run filemap_fault(). In filemap_fault(), kernel run find_get_page() to search the physical page in the page cache.

shm_open_39-1 LTP edgerouter genericx86-64 beaglebone conformance/interfaces/shm_open/shm_open_39-1: execution: UNTESTED Glibc 2.19 restricts shm_open and shm_unlink to SHMDIR: http://sourceware.org/git/?p=glibc.git;a=commit;h=5d30d853295a5fe04cad22fdf649c5e0da6ded8c Then if the file name is too long, shm_open will return EINVAL, not ENAMETOOLONG
shm_open_39-2 LTP edgerouter genericx86-64 beaglebone conformance/interfaces/shm_open/shm_open_39-2: execution: UNTESTED Glibc 2.19 restricts shm_open and shm_unlink to SHMDIR: http://sourceware.org/git/?p=glibc.git;a=commit;h=5d30d853295a5fe04cad22fdf649c5e0da6ded8c Then if the file name is too long, shm_open will return EINVAL, not ENAMETOOLONG
shm_unlink_10-1 LTP edgerouter genericx86-64 beaglebone conformance/interfaces/shm_unlink/shm_unlink_10-1: execution: UNTESTED Glibc 2.19 restricts shm_open and shm_unlink to SHMDIR: http://sourceware.org/git/?p=glibc.git;a=commit;h=5d30d853295a5fe04cad22fdf649c5e0da6ded8c Then if the file name is too long, shm_unlink will return ENOENT, not ENAMETOOLONG
shm_unlink_10-2 LTP edgerouter genericx86-64 beaglebone conformance/interfaces/shm_unlink/shm_unlink_10-2: execution: UNTESTED Glibc 2.19 restricts shm_open and shm_unlink to SHMDIR: http://sourceware.org/git/?p=glibc.git;a=commit;h=5d30d853295a5fe04cad22fdf649c5e0da6ded8c Then if the file name is too long, shm_unlink will return ENOENT, not ENAMETOOLONG