Identificadores e leituras de arquivo APR
O APR resolve um arquivo do título uma vez e depois carrega um identificador local ao processo nos buffers de comando seguintes. Leituras AMPR adiadas reabrem esse mesmo arquivo /app0 somente leitura sem manter um descritor do anfitrião para sempre.
Notas do repositório até 10 de outubro de 2026
Identificadores em vez de caminhos
A API do acelerador não quer um caminho em todo comando. O título resolve um caminho, recebe um identificador compacto de arquivo e coloca esse identificador nos comandos de leitura que envia depois. O PS5PCEM guarda o caminho e o tamanho do arquivo junto ao identificador. A tabela é local ao processo. Caminhos do anfitrião não são devolvidos ao convidado.
Os arquivos vêm da montagem /app0 somente leitura do título. Uma entrada resolvida pode ser reaberta quando uma leitura adiada executa, então o emulador não precisa segurar todo descritor durante a vida inteira do processo. A tabela em cache guarda até 64 arquivos.
Buffers de comando
Um envio é um buffer de comandos do convidado, não uma única chamada de leitura. O PS5PCEM aceita até 32 buffers de comando vivos. Cada buffer é limitado: 32 leituras, 32 escritas, 32 mapas, 32 registros de conclusão e 128 operações. Até 64 envios podem estar em curso, e um pool automático guarda oito buffers. Uma leitura nomeia o identificador do arquivo, um destino convidado, um tamanho e um deslocamento no arquivo, e pode nomear um endereço que recebe a contagem de bytes.
O leitor rejeita um identificador desconhecido, um arquivo ausente, um buffer de comando curto ou desalinhado e um pedido que sairia do arquivo ou do destino. Uma única leitura é limitada a 4 GiB, que é o limite da interface, não uma promessa de que um título emita leituras desse tamanho. Comandos de mapa usam o tamanho de página AMM de 16 KiB que o convidado espera.
Como o APR encontra o AMPR
O APR é dono da tabela de arquivos e do tempo de vida do buffer de comandos. O AMPR é dono dos contadores, das esperas e dos eventos de conclusão que dizem ao título que o trabalho terminou. Um título pode enfileirar muitas leituras de arquivo e depois esperar um contador que o comando de conclusão atualiza. A primeira inicialização de Grand Theft Auto III é o grande caso observado: as leituras passam por esse caminho, e os eventos de conclusão voltam pela fila AMPR.
A E/S assíncrona do kernel, a outra API de arquivo, é uma página à parte. O APR é o fluxo de comandos do acelerador. A API de lote do kernel é a lista de pedidos no estilo POSIX.
O que está implementado
- Identificadores de arquivo locais ao processo para caminhos /app0 somente leitura, com o tamanho retido para leituras posteriores.
- Buffers de comando limitados para leituras, escritas, mapas e registros de conclusão.
- Leituras adiadas que reabrem o mesmo arquivo do título.
- Rejeição verificada de arquivos desconhecidos, estouro e buffers malformados.
O que ainda falta
- O caminho é uma execução em software do buffer de comandos, não o motor de DMA do console.
- Arquivos graváveis de pacote ficam fora de /app0. Os saves passam pela montagem de savedata.
- Um arquivo que o resolvedor não viu não pode ser inventado a partir de um identificador nu.
Mecanismos relacionados
O que estas páginas descrevem