+
+int read_subbuffer(struct fd_pair *pair)
+{
+ unsigned int subbuf_index;
+ int err, ret;
+
+
+ err = ioctl(pair->channel, RELAYFS_GET_SUBBUF,
+ &subbuf_index);
+ printf("index : %u\n", subbuf_index);
+ if(err != 0) {
+ perror("Error in reserving sub buffer");
+ ret = -EPERM;
+ goto get_error;
+ }
+
+ err = TEMP_FAILURE_RETRY(write(pair->trace,
+ pair->mmap + (subbuf_index * pair->subbuf_size),
+ pair->subbuf_size));
+
+ if(err < 0) {
+ perror("Error in writing to file");
+ ret = err;
+ goto write_error;
+ }
+
+
+write_error:
+ err = ioctl(pair->channel, RELAYFS_PUT_SUBBUF);
+ if(err != 0) {
+ perror("Error in unreserving sub buffer");
+ ret = -EPERM;
+ goto get_error;
+ }
+
+get_error:
+ return ret;
+}
+
+