- ret = channel_backend_init(&chan->backend, name, config, priv,
+ /* space for private data */
+ if (priv_data_size) {
+ DECLARE_SHMP(void, priv_data_alloc);
+
+ align_shm(shmobj, priv_data_align);
+ chan->priv_data_offset = shmobj->allocated_len;
+ set_shmp(priv_data_alloc, zalloc_shm(shmobj, priv_data_size));
+ if (!shmp(handle, priv_data_alloc))
+ goto error_append;
+ *priv_data = channel_get_private(chan);
+ } else {
+ chan->priv_data_offset = -1;
+ *priv_data = NULL;
+ }
+
+ ret = channel_backend_init(&chan->backend, name, config,