aboutsummaryrefslogtreecommitdiff
path: root/libports/port-deref-deferred.c
Commit message (Collapse)AuthorAgeFilesLines
* libports: Add more assertionSamuel Thibault2023-11-261-0/+2
| | | | | flip_generations needs to make sure it is not throwing away a list of objects to be released.
* Use our own variant of 'assert' and 'assert_perror'.Justus Winter2017-08-051-6/+6
| | | | | Our variants print stack traces on failures. This will make locating errors much easier.
* libports: use protected payloads to optimize the object lookupJustus Winter2015-04-071-0/+161
* NEWS: Mention protected payloads. * libports/Makefile (SRCS): Add `port-deref-deferred.c'. * libports/create-internal.c (_ports_create_port_internal): Set the protected payload to the objects address. * libports/import-port.c (ports_import_port): Likewise. * libports/reallocate-from-external.c (ports_reallocate_from_external): Likewise. * libports/reallocate-port.c (ports_reallocate_port): Likewise. * libports/transfer-right.c (ports_transfer_right): Likewise. * libports/manage-multithread.c (ports_manage_port_operations_multithread): Use the protected payload for the object lookup if provided. Add thread pool management calls. * libports/manage-one-thread.c (ports_manage_port_operations_one_thread): Likewise. * libports/destroy-right.c (ports_destroy_right): Defer the dereferencing of outstanding send rights to avoid a port_info use-after-free. * libports/port-deref-deferred.c: New file. * libports/port-deref-deferred.h: Likewise. * libports/ports.h (struct port_bucket): New field `threadpool'. (ports_lookup_payload): Check `port_right'.