@@ -3150,6 +3150,47 @@ static bool manager_timestamp_shall_serialize(ManagerTimestamp t) {
31503150 MANAGER_TIMESTAMP_UNITS_LOAD_START , MANAGER_TIMESTAMP_UNITS_LOAD_FINISH );
31513151}
31523152
3153+ #define DESTROY_IPC_FLAG (UINT32_C(1) << 31)
3154+
3155+ static void manager_serialize_uid_refs_internal (
3156+ Manager * m ,
3157+ FILE * f ,
3158+ Hashmap * * uid_refs ,
3159+ const char * field_name ) {
3160+
3161+ Iterator i ;
3162+ void * p , * k ;
3163+
3164+ assert (m );
3165+ assert (f );
3166+ assert (uid_refs );
3167+ assert (field_name );
3168+
3169+ /* Serialize the UID reference table. Or actually, just the IPC destruction flag of it, as
3170+ * the actual counter of it is better rebuild after a reload/reexec. */
3171+
3172+ HASHMAP_FOREACH_KEY (p , k , * uid_refs , i ) {
3173+ uint32_t c ;
3174+ uid_t uid ;
3175+
3176+ uid = PTR_TO_UID (k );
3177+ c = PTR_TO_UINT32 (p );
3178+
3179+ if (!(c & DESTROY_IPC_FLAG ))
3180+ continue ;
3181+
3182+ (void ) serialize_item_format (f , field_name , UID_FMT , uid );
3183+ }
3184+ }
3185+
3186+ static void manager_serialize_uid_refs (Manager * m , FILE * f ) {
3187+ manager_serialize_uid_refs_internal (m , f , & m -> uid_refs , "destroy-ipc-uid" );
3188+ }
3189+
3190+ static void manager_serialize_gid_refs (Manager * m , FILE * f ) {
3191+ manager_serialize_uid_refs_internal (m , f , & m -> gid_refs , "destroy-ipc-gid" );
3192+ }
3193+
31533194int manager_serialize (
31543195 Manager * m ,
31553196 FILE * f ,
@@ -4383,8 +4424,6 @@ ManagerState manager_state(Manager *m) {
43834424 return MANAGER_RUNNING ;
43844425}
43854426
4386- #define DESTROY_IPC_FLAG (UINT32_C(1) << 31)
4387-
43884427static void manager_unref_uid_internal (
43894428 Manager * m ,
43904429 Hashmap * * uid_refs ,
@@ -4545,45 +4584,6 @@ static void manager_vacuum(Manager *m) {
45454584 exec_runtime_vacuum (m );
45464585}
45474586
4548- static void manager_serialize_uid_refs_internal (
4549- Manager * m ,
4550- FILE * f ,
4551- Hashmap * * uid_refs ,
4552- const char * field_name ) {
4553-
4554- Iterator i ;
4555- void * p , * k ;
4556-
4557- assert (m );
4558- assert (f );
4559- assert (uid_refs );
4560- assert (field_name );
4561-
4562- /* Serialize the UID reference table. Or actually, just the IPC destruction flag of it, as the actual counter
4563- * of it is better rebuild after a reload/reexec. */
4564-
4565- HASHMAP_FOREACH_KEY (p , k , * uid_refs , i ) {
4566- uint32_t c ;
4567- uid_t uid ;
4568-
4569- uid = PTR_TO_UID (k );
4570- c = PTR_TO_UINT32 (p );
4571-
4572- if (!(c & DESTROY_IPC_FLAG ))
4573- continue ;
4574-
4575- (void ) serialize_item_format (f , field_name , UID_FMT , uid );
4576- }
4577- }
4578-
4579- void manager_serialize_uid_refs (Manager * m , FILE * f ) {
4580- manager_serialize_uid_refs_internal (m , f , & m -> uid_refs , "destroy-ipc-uid" );
4581- }
4582-
4583- void manager_serialize_gid_refs (Manager * m , FILE * f ) {
4584- manager_serialize_uid_refs_internal (m , f , & m -> gid_refs , "destroy-ipc-gid" );
4585- }
4586-
45874587static void manager_deserialize_uid_refs_one_internal (
45884588 Manager * m ,
45894589 Hashmap * * uid_refs ,
0 commit comments