int uORB::DeviceNode::close(struct file *filp) { /* is this the publisher closing? */ if (getpid() == _publisher) { _publisher = 0; } else { SubscriberData *sd = filp_to_sd(filp); if (sd != nullptr) { hrt_cancel(&sd->update_call); remove_internal_subscriber(); delete sd; sd = nullptr; } } return CDev::close(filp); }
int uORB::DeviceNode::close(device::file_t *filp) { //warnx("uORB::DeviceNode::close fd = %d", filp->fd); /* is this the publisher closing? */ if (px4_getpid() == _publisher) { _publisher = 0; } else { SubscriberData *sd = filp_to_sd(filp); if (sd != nullptr) { hrt_cancel(&sd->update_call); remove_internal_subscriber(); delete sd; sd = nullptr; } } return VDev::close(filp); }