os_activity_initiate(3) Library Functions Manual os_activity_initiate(3)

os_activity_initiate, os_activity_initiate_factivity related routines

#include <os/activity.h>

void
os_activity_initiate(const char *description, uint32_t flags, void (^activity_block)(void));

void
os_activity_initiate_f(const char *description, uint32_t flags, void *ctx, void function(void *ctx));

An activity is essentially an identifier that is created by the system. The identifier is transported with work via GCD, XPC and other mechanisms. The identifier simplifies debugging programs since it correlates the trace and log messages to the area in question. Although an activity appears to have a start/end, it is only finished when no other work related to it is enqueued to be processed. Activity functions only allow constant strings for performance and privacy, similar to os_trace(3).

Supported Activity Name:

os_activity_initiate("indexing database", OS_ACTIVITY_FLAG_DEFAULT, ^(void) {
	[self indexDatabase];
});

Unsupported Activity Name:

snprintf(buffer, "indexing database for %s", username);
os_activity_initiate(buffer, OS_ACTIVITY_FLAG_DEFAULT, ^(void) {
	[self indexDatabase];
});

os_activity_initiate and os_activity_initiate_f wraps the block or function with a new activity.

Example use of activity with a message.

#include <os/trace.h>
#include <os/activity.h>

- (IBOutlet) indexDatabase:(id) sender {
	os_activity_initiate("index database", OS_ACTIVITY_FLAG_DEFAULT, ^{
		os_trace("re-indexing database for %d", self.uid);

		[self reIndex: self.uid];
	});
}

os_log(3), os_trace(3)

June 2, 2016 Darwin