Skip to content

feat(libs): implement socketpair, syslog and sceVideoOutGetResolutionStatus - #1839

Closed
sx4im wants to merge 1 commit into
boykopovar:mainfrom
sx4im:feat/missing-homebrew-exports-1578
Closed

sx4im wants to merge 1 commit into
boykopovar:mainfrom
sx4im:feat/missing-homebrew-exports-1578

Conversation

@sx4im

@sx4im sx4im commented Oct 8, 2026

Copy link
Copy Markdown

Implements three exports that #1578 reports as unresolved imports stopping GPL homebrew titles at start-up:

  • socketpair (libkernel): connected socket pairs for AF_UNIX, AF_INET and AF_INET6, stream and datagram. POSIX uses the native call for AF_UNIX and a loopback pair otherwise; Windows uses a loopback pair, with a filesystem path pair for AF_UNIX.
  • syslog (libSceLibcInternal): formats the guest message with its varargs and writes it to host stderr.
  • sceVideoOutGetResolutionStatus (libSceVideoOut): reports the configured output width/height as both the full and pane extents.

Related to #1578. This covers the three exports from its list with no open PR; the rest are covered by other PRs or need hardware to verify.

Tested

Reproduced first: extracted the import NIDs from the release ZIPs of ps5-opengl (PPSA99005), EVO-PLAYER (PPSA99039) and ProsperoRadio (PPSA99001). Confirmed 6kPnj51T62Y (sceVideoOutGetResolutionStatus), UNS2V4S097M (syslog) and MZb0GKT3mo8 (socketpair) are imported but absent from the source exports on main (repo's own tools/nid_names.py::collect_real_names, 3845 names). After the change all three resolve.

  • Socketpair coverage added to guest_udp (AF_INET stream pair with bidirectional exchange, AF_INET datagram pair, AF_UNIX stream pair, and the EFAULT/EPROTONOSUPPORT/EAFNOSUPPORT error cases). Runs green standalone.
  • guest_syslog (new): checks formatted output reaches stderr and that a null message throws. Passes on Linux.
  • guest_video_out_wqhd_detection: extended with resolution-status checks (values, invalid handle, null status). Passes on Linux.
  • python3 tools/check_conventions.py --base origin/main: clean.
  • Full ctest suite: 462/464 pass. The 2 failures (guest_udp, guest_sce_net) also fail on pristine main in this environment (host EIO from recvfrom in the container), so they are pre-existing and unrelated. The diff is fully additive: 388 insertions, 0 deletions.

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch)
  • No investigation .md files or images added to the repository
  • Generic behaviour, not specific to one title
  • Depends on: none
  • AI-assisted: yes

…Status

These three exports are imported by GPL homebrew titles (ps5-opengl,
EVO-PLAYER-PS5, ProsperoRadio) but were missing, stopping the titles at
start-up with unresolved imports. Related to boykopovar#1578.

socketpair creates connected AF_INET/AF_INET6/AF_UNIX pairs backed by
real host sockets, registered in the kernel descriptor table like
socket(). syslog formats the guest message to the host standard error
stream. sceVideoOutGetResolutionStatus reports the configured output
resolution from the video-out context.

Tests: socketpair coverage in GuestUdp, syslog formatting in
GuestSyslog, resolution status values and error paths in
GuestVideoOutWqhdDetection.
@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.

Pull request Conflicting files (lines on main) Same exports Same new files
#1832 core/libs/prx/libkernel/Socket/src/Udp.cpp L4, L14-15
#1852 core/libs/prx/libSceLibcInternal/Export.cpp L6

@MarcZX10

MarcZX10 commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

The overlap check found existing open PRs for every export in this combined change: socketpair in #1711 (also included in #1795), syslog in #1729, and sceVideoOutGetResolutionStatus in #1714. CONTRIBUTING requires checking for duplicate implementations and keeping one topic per PR. Please coordinate with those authors or the maintainers before continuing; if any existing PR is abandoned, note the agreed handoff and split the independent exports so each branch has one topic.

@johnmaia

johnmaia commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Two of these three exports already have earlier open PRs: sceVideoOutGetResolutionStatus is #1714 (opened 17:25, confirmed on Windows by @LeandroLP23 with EVO Player) and syslog is #1729 (17:47), and socketpair is #1711. The project asks for one topic per PR, so it may be simplest to split this up and keep whatever doesn't overlap.

@oneandonlydean

Copy link
Copy Markdown
Collaborator

Closing: this puts three exports in one PR. sceVideoOutGetResolutionStatus is in #1714, and no title stops at socketpair or syslog on main yet (#1711, #1729). If one becomes a title's stop, please open a PR for that export alone.

@LeandroLP23 LeandroLP23 mentioned this pull request Oct 9, 2026
9 tasks done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants