+static void $bzero(void *data, size_t size) {
+ char *bytes(reinterpret_cast<char *>(data));
+ for (size_t i(0); i != size; ++i)
+ bytes[i] = 0;
+}
+
+extern "C" void Start(Baton *baton) {
+ struct _pthread self;
+ $bzero(&self, sizeof(self));
+
+ // this code comes from _pthread_set_self
+ self.tsd[0] = &self;
+ baton->__pthread_set_self(&self);