Status: Verification
Parent: #37
Depends on: #38 and #41 (both satisfied).
Goal
Fill gaps in the common pthread/semaphore utility surface only where supplied ARM32 libraries or integration evidence require them, without turning the project into a blanket POSIX implementation.
Candidate APIs
Prioritize by observed imports/machine code before implementation:
sem_trywait, sem_getvalue, sem_timedwait;
- mutex timed lock;
- additional pthread attr getters/setters;
pthread_getattr_np-style queries if proven;
- thread naming/scheduling helpers only if libraries require them.
Rules
- Reuse existing semaphore/mutex/logical-thread state.
- Timed functions use the accepted clock/deadline seam.
- Query APIs return synthetic logical state, not host pthread internals.
- Unsupported scheduling knobs may return verified Android errors rather than silently faking success when that is semantically safer.
- Each added symbol must have evidence and bounded failure behavior.
Acceptance criteria
- Maintain an evidence table in the issue/architecture docs mapping each implemented symbol to supplied binary or reproducible fixture evidence.
- No duplicate synchronization state models.
- Exact Android return/error behavior is documented for accepted calls.
- Partial libc shim exports increase only for accepted symbols.
- Existing 45-export pthread/libc fixture remains backward compatible.
Validation
Focused tests per accepted API, real ARM32 relocation/wrapper integration, and exact-head CI.
Evidence — supplied artifacts (2026-10-02)
- ARM32 FMOD
libfmod.so (sha256 982e994c46a7f797fbd6e10df31a98d544c2bf117fe33c2292f4d6cc454a6544) adds no utility imports beyond the already accepted lifecycle/mutex surface.
- VLC APK
VLC-Android-3.7.2-Beta-2-all-20260925-0117.apk (sha256 10da537a545d5c9aa111571bbab3d1aae4204d2c4a0d4a4cdc22efab6d71cbe5), scanning every lib/armeabi-v7a/*.so, finds new utility imports only in ARM32 libvlc.so: pthread_attr_getstacksize (already implemented), pthread_setname_np, pthread_setschedparam, and pthread_getschedparam.
- Supplied
libemu32.so is AArch64, not AArch32 (sha256 a467c34bc1543a2a193191ad42c4ac3a8e4a00181e83fa223abf7d42bc421119). Its sem_trywait, sem_getvalue, and pthread_attr_setschedparam imports do not justify expanding the AArch32 shim.
- No supplied ARM32 artifact evidence was found for
sem_trywait, sem_getvalue, sem_timedwait, pthread_mutex_timedlock, pthread_attr_setschedparam, or pthread_getattr_np; keep those out of this implementation slice.
Non-goals
Implementing every pthread/sem extension merely because Bionic exports it.
Status: Verification
Parent: #37
Depends on: #38 and #41 (both satisfied).
Goal
Fill gaps in the common pthread/semaphore utility surface only where supplied ARM32 libraries or integration evidence require them, without turning the project into a blanket POSIX implementation.
Candidate APIs
Prioritize by observed imports/machine code before implementation:
sem_trywait,sem_getvalue,sem_timedwait;pthread_getattr_np-style queries if proven;Rules
Acceptance criteria
Validation
Focused tests per accepted API, real ARM32 relocation/wrapper integration, and exact-head CI.
Evidence — supplied artifacts (2026-10-02)
libfmod.so(sha256982e994c46a7f797fbd6e10df31a98d544c2bf117fe33c2292f4d6cc454a6544) adds no utility imports beyond the already accepted lifecycle/mutex surface.VLC-Android-3.7.2-Beta-2-all-20260925-0117.apk(sha25610da537a545d5c9aa111571bbab3d1aae4204d2c4a0d4a4cdc22efab6d71cbe5), scanning everylib/armeabi-v7a/*.so, finds new utility imports only in ARM32libvlc.so:pthread_attr_getstacksize(already implemented),pthread_setname_np,pthread_setschedparam, andpthread_getschedparam.libemu32.sois AArch64, not AArch32 (sha256a467c34bc1543a2a193191ad42c4ac3a8e4a00181e83fa223abf7d42bc421119). Itssem_trywait,sem_getvalue, andpthread_attr_setschedparamimports do not justify expanding the AArch32 shim.sem_trywait,sem_getvalue,sem_timedwait,pthread_mutex_timedlock,pthread_attr_setschedparam, orpthread_getattr_np; keep those out of this implementation slice.Non-goals
Implementing every pthread/sem extension merely because Bionic exports it.