diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-10-01 15:39:49 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-10-01 15:59:22 +0200 |
commit | e64697e4abda6c7ef512f4a2948c0d777d668be9 (patch) | |
tree | c9307d06b177dbf6da5e8acb92eeab4bd86118ed /ipc/ipc_kmsg.c | |
parent | 922e514ad93bf21985659ad10a96019a20ad4c10 (diff) | |
download | gnumach-e64697e4abda6c7ef512f4a2948c0d777d668be9.tar.gz gnumach-e64697e4abda6c7ef512f4a2948c0d777d668be9.tar.bz2 gnumach-e64697e4abda6c7ef512f4a2948c0d777d668be9.zip |
Add and use ikm_cache_alloc/free/_try
Diffstat (limited to 'ipc/ipc_kmsg.c')
-rw-r--r-- | ipc/ipc_kmsg.c | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/ipc/ipc_kmsg.c b/ipc/ipc_kmsg.c index d31c3ee9..bd1b30da 100644 --- a/ipc/ipc_kmsg.c +++ b/ipc/ipc_kmsg.c @@ -494,16 +494,9 @@ ipc_kmsg_get( return MACH_SEND_MSG_TOO_SMALL; if (size <= IKM_SAVED_MSG_SIZE) { - kmsg = ikm_cache(); - if (kmsg != IKM_NULL) { - ikm_cache() = IKM_NULL; - ikm_check_initialized(kmsg, IKM_SAVED_KMSG_SIZE); - } else { - kmsg = ikm_alloc(IKM_SAVED_MSG_SIZE); - if (kmsg == IKM_NULL) - return MACH_SEND_NO_BUFFER; - ikm_init(kmsg, IKM_SAVED_MSG_SIZE); - } + kmsg = ikm_cache_alloc(); + if (kmsg == IKM_NULL) + return MACH_SEND_NO_BUFFER; } else { kmsg = ikm_alloc(size); if (kmsg == IKM_NULL) @@ -585,11 +578,7 @@ ipc_kmsg_put( else mr = MACH_MSG_SUCCESS; - if ((kmsg->ikm_size == IKM_SAVED_KMSG_SIZE) && - (ikm_cache() == IKM_NULL)) - ikm_cache() = kmsg; - else - ikm_free(kmsg); + ikm_cache_free(kmsg); return mr; } |