mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-25 22:32:39 +02:00
Added buffer param to appletCreateTransferMemoryStorage and appletCreateHandleStorageTmem, tmemCreateFromMemory will now be used with this when buffer is not NULL.
This commit is contained in:
parent
2d5000ba57
commit
d821185e3d
@ -309,10 +309,11 @@ Result appletCreateStorage(AppletStorage *s, s64 size);
|
|||||||
/**
|
/**
|
||||||
* @brief Creates a TransferMemory storage.
|
* @brief Creates a TransferMemory storage.
|
||||||
* @param s Storage object.
|
* @param s Storage object.
|
||||||
|
* @param buffer TransferMemory buffer, will be automatically allocated if NULL.
|
||||||
* @param size Size of storage.
|
* @param size Size of storage.
|
||||||
* @param writable Controls whether writing to the storage is allowed with \ref appletStorageWrite.
|
* @param writable Controls whether writing to the storage is allowed with \ref appletStorageWrite.
|
||||||
*/
|
*/
|
||||||
Result appletCreateTransferMemoryStorage(AppletStorage *s, s64 size, bool writable);
|
Result appletCreateTransferMemoryStorage(AppletStorage *s, void* buffer, s64 size, bool writable);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Creates a HandleStorage. Only available on 2.0.0+.
|
* @brief Creates a HandleStorage. Only available on 2.0.0+.
|
||||||
@ -325,9 +326,10 @@ Result appletCreateHandleStorage(AppletStorage *s, s64 inval, Handle handle);
|
|||||||
/**
|
/**
|
||||||
* @brief Creates a HandleStorage using TransferMemory. Wrapper for \ref appletCreateHandleStorage.
|
* @brief Creates a HandleStorage using TransferMemory. Wrapper for \ref appletCreateHandleStorage.
|
||||||
* @param s Storage object.
|
* @param s Storage object.
|
||||||
|
* @param buffer TransferMemory buffer, will be automatically allocated if NULL.
|
||||||
* @param size Size of storage.
|
* @param size Size of storage.
|
||||||
*/
|
*/
|
||||||
Result appletCreateHandleStorageTmem(AppletStorage *s, s64 size);
|
Result appletCreateHandleStorageTmem(AppletStorage *s, void* buffer, s64 size);
|
||||||
|
|
||||||
/// Closes the storage object. TransferMemory closing is seperate, see \ref appletStorageCloseTmem.
|
/// Closes the storage object. TransferMemory closing is seperate, see \ref appletStorageCloseTmem.
|
||||||
/// Other applet functions which push an input storage will automatically call this.
|
/// Other applet functions which push an input storage will automatically call this.
|
||||||
|
@ -1737,12 +1737,13 @@ static Result _appletCreateTransferMemoryStorage(Service* srv_out, TransferMemor
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
Result appletCreateTransferMemoryStorage(AppletStorage *s, s64 size, bool writable) {
|
Result appletCreateTransferMemoryStorage(AppletStorage *s, void* buffer, s64 size, bool writable) {
|
||||||
Result rc=0;
|
Result rc=0;
|
||||||
|
|
||||||
memset(s, 0, sizeof(AppletStorage));
|
memset(s, 0, sizeof(AppletStorage));
|
||||||
|
|
||||||
rc = tmemCreate(&s->tmem, size, Perm_None);
|
if (buffer==NULL) rc = tmemCreate(&s->tmem, size, Perm_None);
|
||||||
|
else rc = tmemCreateFromMemory(&s->tmem, buffer, size, Perm_None);
|
||||||
if (R_FAILED(rc)) return rc;
|
if (R_FAILED(rc)) return rc;
|
||||||
|
|
||||||
rc = _appletCreateTransferMemoryStorage(&s->s, &s->tmem, writable);
|
rc = _appletCreateTransferMemoryStorage(&s->s, &s->tmem, writable);
|
||||||
@ -1758,12 +1759,13 @@ Result appletCreateHandleStorage(AppletStorage *s, s64 inval, Handle handle) {
|
|||||||
return _appletCmdInHandle64(&g_appletILibraryAppletCreator, &s->s, 12, handle, inval);
|
return _appletCmdInHandle64(&g_appletILibraryAppletCreator, &s->s, 12, handle, inval);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result appletCreateHandleStorageTmem(AppletStorage *s, s64 size) {
|
Result appletCreateHandleStorageTmem(AppletStorage *s, void* buffer, s64 size) {
|
||||||
Result rc=0;
|
Result rc=0;
|
||||||
|
|
||||||
memset(s, 0, sizeof(AppletStorage));
|
memset(s, 0, sizeof(AppletStorage));
|
||||||
|
|
||||||
rc = tmemCreate(&s->tmem, size, Perm_None);
|
if (buffer==NULL) rc = tmemCreate(&s->tmem, size, Perm_None);
|
||||||
|
else rc = tmemCreateFromMemory(&s->tmem, buffer, size, Perm_None);
|
||||||
if (R_FAILED(rc)) return rc;
|
if (R_FAILED(rc)) return rc;
|
||||||
|
|
||||||
rc = appletCreateHandleStorage(s, s->tmem.size, s->tmem.handle);
|
rc = appletCreateHandleStorage(s, s->tmem.size, s->tmem.handle);
|
||||||
|
Loading…
Reference in New Issue
Block a user