AnyPS5/docs/dev/debt
screamm 51b3e3ef38 feat(libkernel): implement the remaining termios calls
Adds tcsendbreak (vXE-dIUIZlE), tcdrain (brGGJWsZauw), tcflush
(FxHW5NuEXsY), tcflow (OG8xRaGIpqk), tcgetpgrp (5OEl1mRhUm0) and
tcsetpgrp (YMuesZTyTl4) next to tcgetattr and tcsetattr in
File/src/Terminal.cpp. The NIDs come from tools/nid_names.py and match
aerolib.csv (zecoxao/sce_symbols 2883963a).

They follow FreeBSD 11.4 lib/libc/gen/termios.c (8c639945), which
implements each one over a terminal ioctl: tcflush returns EINVAL for a
queue other than TCIFLUSH, TCOFLUSH or TCIOFLUSH and tcflow for an
action outside TCOOFF..TCION before the descriptor is used; every other
call fails with the error the merged tcgetattr gives (EBADF for a closed
descriptor, ENOTTY for a file or pipe, EADDRNOTAVAIL or EOPNOTSUPP for a
socket, per soo_ioctl and in_control/in6_control). tcsendbreak fails on
TIOCSBRK before its 0.4 s pause, and tcflow's TCIOFF/TCION fail in
tcgetattr. FreeBSD's pipe_ioctl answers TIOCGPGRP/TIOCSPGRP on a pipe or
FIFO with the SIGIO owner, which is not modelled, so tcgetpgrp and
tcsetpgrp throw on a host pipe above descriptor 2.

Titles (homebrew catalog #1578), predicted stops from registry order:
- PS5MC PPSA99420 imports tcsendbreak (442), tcdrain (443), tcflush
  (444), tcflow (445), tcgetpgrp (462) and tcsetpgrp (463); once pause
  and setrlimit are in, it stops at
  "FAIL: unresolved ELF import vXE-dIUIZlE from libkernel.prx".
- XPSemu PPSA97358 imports tcsendbreak (214), its first uncovered import
  after execv, sigwait, setrlimit, mlockall, setuid and getopt:
  "FAIL: unresolved ELF import vXE-dIUIZlE from libkernel.prx".

guest_terminal covers each call over stdin, stdout, stderr, a file, both
pipe ends and an AF_INET socket, the EINVAL cases (also on -1), and
EBADF for -1, a closed socket, a closed pipe and a closed file.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-12 21:48:20 +02:00
..
libSceAcm.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceAgc.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceAgcDriver.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceAjm.native.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceAmpr.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceAppContent.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceAudio3d.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceAudioIn.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceAudioOut.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceAudioPropagation.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceAudiodec.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceAvPlayer.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceBluetoothHid.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceCdlgG2P.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceCdlgPlayerReview.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceCesCs.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceCommonDialog.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceContentDelete.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceContentExport.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceErrorDialog.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceFiber.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceFont.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceGameLiveStreaming.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceGameUpdate.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceHmd.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceHmd2.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceHttp.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceHttp2.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceIme.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceJobManager.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceJpegEnc.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceJson2.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceKeyboard.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceLibcInternal.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceLoginDialog.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceMbus.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceMsgDialog.native.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceNet.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceNgs2.native.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceNpAuth.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceNpAuthAuthorizedAppDialog.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceNpCommerce.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceNpEntitlementAccess.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceNpManager.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceNpPartner001.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceNpSessionSignaling.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceNpTrophy2.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceNpWebApi2.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceOpusCeltDec.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceOpusDec.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libScePad.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libScePlayGo.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libScePlayerInvitationDialog.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libScePngEnc.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libScePosixForWebKit.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libScePsml_debug.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceRazorCpu.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceRtc.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceRudp.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceSaveData.native.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceSaveDataDialog.native.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceShare.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceSharePlay.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceSigninDialog.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceSsl.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceSystemGesture.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceSystemService.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceTextToSpeech2.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceUlt.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceUsbd.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceUserService.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceVdecsw.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceVideoOut.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceVideodec2.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceVoiceChat.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceVoiceQoS.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceVrSetupDialog.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libSceZlib.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libc.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libkernel.md feat(libkernel): implement the remaining termios calls 2026-10-12 21:48:20 +02:00
libkernel_sys.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
libs.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
relinker.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
shader.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00
ulobjmgr.md docs(debt): move library entries to one file per library 2026-10-12 20:38:29 +02:00