Skip to content

apps/examples/ltp: port LTP Open POSIX Test Suite to TizenRT - #7496

Open
vivek1-j wants to merge 2 commits into
Samsung:masterfrom
vivek1-j:10082026_ltp_port
Open

apps/examples/ltp: port LTP Open POSIX Test Suite to TizenRT#7496
vivek1-j wants to merge 2 commits into
Samsung:masterfrom
vivek1-j:10082026_ltp_port

Conversation

@vivek1-j

Copy link
Copy Markdown
Contributor

Port 696 LTP tests across 8 OS-specific categories: scheduler (71), pthreads (99), signals (343), condvar (2), stress (10), timers (56), mqueues (92), and semaphores (23).

LTP test runner (ltprun):

  • Implemented in ltp_runner.c as a TASH command for batch execution
  • Each test runs in a separate task via task_create() + waitpid() to isolate tests that call exit()
  • Test index passed as string argument using a static buffer
  • Supports: ltprun all/category/test/list/stop with repeat (-r) option
  • ltp_register.sh auto-discovers tests during build context phase, filters blacklisted files, and generates ltp_test_registry.h
  • Each test main() renamed via -Dmain= compiler flag

Blacklisted tests:

  • BLACKWORDS: ~40+ grep patterns excluding files referencing unimplemented POSIX APIs (fork, sigaltstack, sysconf, clock_nanosleep, pthread_mutex_timedlock, pthread_rwlockattr_*, user identity APIs, shared memory, etc.)
  • BLACKSRCS: 11 explicit files excluded for using Linux-specific APIs (setrlimit, uname, setitimer, PTHREAD_SCOPE_SYSTEM, SCHED_OTHER, fork)
  • Config-dependent blacklists for CONFIG_PTHREAD_CLEANUP, CONFIG_SMP, CONFIG_RR_INTERVAL, CONFIG_FS_NAMED_SEMAPHORES, CONFIG_MQ_MAXMSGSIZE

Patches applied (22 patches, 0001-0023):

Patch File(s) Description
0001 pthread_rwlock_unlock Follow Linux rwlock unlock behavior for TizenRT
0002 Multiple files Use #ifdef instead of #if for linux guard
0003 stress/threads/sigqueue/s-c.c Re-init static variable for multiple runs
0004 pthread_cond_wait Update test case for TizenRT compatibility
0005 pthread_cond_timedwait Update testcase for TizenRT
0006 pthread_rwlock_* Fix rwlock initialization requirement
0007 pthread_kill Add usleep to avoid semcount overturn
0008 sigaction/23-10.c Fix deadloop in sigaction test
0009 Multiple files Modify user code for fdcheck compatibility
0010 sem_open/s-c1.c Fix build warning (static struct row)
0011 tst_process_state.h Fix proc.h header duplicate inclusion
0012 Multiple files Fix build errors
0013 affinity.h Fix errno lvalue in affinity helper
0014 pthread_attr_setschedpolicy Fix sched policy check for TizenRT
0015 affinity.h Add TizenRT SMP affinity support
0016 sched_setscheduler/16-1.c Fix return value check
0017 pthread_setschedparam/5-1.c Fix deadlock (add usleep and sem_post)
0018 pthread_setschedprio/1-1.c Add completion print and fflush
0019 schedule, condvar Fix priority values (150/120 for TizenRT)
0021 signal/6-1.c, 7-1.c Fix errno lvalue bug (use set_errno())
0022 mq_timedsend/12-1.c Fix errno lvalue in error_and_exit macro
0023 pthread_mutex_lock/s-c1.c Fix bool variable name conflict with stdbool.h

Authored-By: Vivek Jainvivek1.j@samsung.com

Port 696 LTP tests across 8 OS-specific categories: scheduler (71),
pthreads (99), signals (343), condvar (2), stress (10), timers (56),
mqueues (92), and semaphores (23).

LTP test runner (ltprun):
- Implemented in ltp_runner.c as a TASH command for batch execution
- Each test runs in a separate task via task_create() + waitpid()
  to isolate tests that call exit()
- Test index passed as string argument using a static buffer
- Supports: ltprun all/category/test/list/stop with repeat (-r) option
- ltp_register.sh auto-discovers tests during build context phase,
  filters blacklisted files, and generates ltp_test_registry.h
- Each test main() renamed via -Dmain= compiler flag

Blacklisted tests:
- BLACKWORDS: ~40+ grep patterns excluding files referencing unimplemented
  POSIX APIs (fork, sigaltstack, sysconf, clock_nanosleep,
  pthread_mutex_timedlock, pthread_rwlockattr_*, user identity APIs,
  shared memory, etc.)
- BLACKSRCS: 11 explicit files excluded for using Linux-specific APIs
  (setrlimit, uname, setitimer, PTHREAD_SCOPE_SYSTEM, SCHED_OTHER, fork)
- Config-dependent blacklists for CONFIG_PTHREAD_CLEANUP, CONFIG_SMP,
  CONFIG_RR_INTERVAL, CONFIG_FS_NAMED_SEMAPHORES, CONFIG_MQ_MAXMSGSIZE

Patches applied (22 patches, 0001-0023):

| Patch | File(s) | Description |
|-------|---------|-------------|
| 0001 | pthread_rwlock_unlock | Follow Linux rwlock unlock behavior for TizenRT |
| 0002 | Multiple files | Use #ifdef instead of #if for __linux__ guard |
| 0003 | stress/threads/sigqueue/s-c.c | Re-init static variable for multiple runs |
| 0004 | pthread_cond_wait | Update test case for TizenRT compatibility |
| 0005 | pthread_cond_timedwait | Update testcase for TizenRT |
| 0006 | pthread_rwlock_* | Fix rwlock initialization requirement |
| 0007 | pthread_kill | Add usleep to avoid semcount overturn |
| 0008 | sigaction/23-10.c | Fix deadloop in sigaction test |
| 0009 | Multiple files | Modify user code for fdcheck compatibility |
| 0010 | sem_open/s-c1.c | Fix build warning (static struct row) |
| 0011 | tst_process_state.h | Fix proc.h header duplicate inclusion |
| 0012 | Multiple files | Fix build errors |
| 0013 | affinity.h | Fix errno lvalue in affinity helper |
| 0014 | pthread_attr_setschedpolicy | Fix sched policy check for TizenRT |
| 0015 | affinity.h | Add TizenRT SMP affinity support |
| 0016 | sched_setscheduler/16-1.c | Fix return value check |
| 0017 | pthread_setschedparam/5-1.c | Fix deadlock (add usleep and sem_post) |
| 0018 | pthread_setschedprio/1-1.c | Add completion print and fflush |
| 0019 | schedule, condvar | Fix priority values (150/120 for TizenRT) |
| 0021 | signal/6-1.c, 7-1.c | Fix errno lvalue bug (use set_errno()) |
| 0022 | mq_timedsend/12-1.c | Fix errno lvalue in error_and_exit macro |
| 0023 | pthread_mutex_lock/s-c1.c | Fix bool variable name conflict with stdbool.h |
| 0024 | clock_settime/speculative/4-3.c | Fix the static variable initialization across multiple execution |

Co-Authored-By: Cline SR
@vivek1-j
vivek1-j force-pushed the 10082026_ltp_port branch 4 times, most recently from 8f6b242 to 45d2dda Compare August 31, 2026 13:30
When EXTERNAL_LTP is enabled, LTP source needs to be downloaded from
GitHub during the build process. However, proxy settings in docker
environment can prevent the download from succeeding.

Add logic to temporarily unset HTTP_PROXY, HTTPS_PROXY, http_proxy,
and https_proxy environment variables when downloading LTP source
inside docker container. This ensures reliable source download while
preserving proxy settings for other build operations.

Changes:
- Check for EXTERNAL_LTP config option
- Unset proxy variables before LTP source download
- Restore proxy variables after download completes

Authored-By: Vivek Jain <vivek1.j@samsung.com>
Co-Authored-By: Cline SR
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant