Linux: Added commands to show threads and devices

The list_tasks and list_devices commands will show
lists of running px4 threads and created virtual device nodes.

The list_builtins command was removes and the list of commands
will be shown if return is pressed.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
This commit is contained in:
Mark Charlebois
2015-04-20 11:35:47 -07:00
parent 1d676b2e10
commit f0312d2da0
8 changed files with 106 additions and 43 deletions
+11
View File
@@ -454,5 +454,16 @@ VDev *VDev::getDev(const char *path)
return NULL;
}
void VDev::showDevices()
{
int i=0;
printf("Devices:\n");
for (; i<PX4_MAX_DEV; ++i) {
if (devmap[i]) {
printf(" %s\n", devmap[i]->name);
}
}
}
} // namespace device
+4 -3
View File
@@ -64,10 +64,10 @@ struct px4_dev_handle_t {
int fd;
int flags;
void *priv;
void *cdev;
void *vdev;
px4_dev_handle_t() : fd(-1), flags(0), priv(NULL), cdev(NULL) {}
px4_dev_handle_t(int f, void *c, int d) : fd(d), flags(f), priv(NULL), cdev(c) {}
px4_dev_handle_t() : fd(-1), flags(0), priv(NULL), vdev(NULL) {}
px4_dev_handle_t(int f, void *c, int d) : fd(d), flags(f), priv(NULL), vdev(c) {}
};
/**
@@ -333,6 +333,7 @@ public:
virtual int ioctl(px4_dev_handle_t *handlep, int cmd, unsigned long arg);
static VDev *getDev(const char *path);
static void showDevices(void);
protected:
+11 -6
View File
@@ -117,7 +117,7 @@ int px4_close(int fd)
{
int ret;
if (valid_fd(fd)) {
VDev *dev = (VDev *)(filemap[fd]->cdev);
VDev *dev = (VDev *)(filemap[fd]->vdev);
PX4_DEBUG("px4_close fd = %d\n", fd);
ret = dev->close(filemap[fd]);
filemap[fd] = NULL;
@@ -135,7 +135,7 @@ ssize_t px4_read(int fd, void *buffer, size_t buflen)
{
int ret;
if (valid_fd(fd)) {
VDev *dev = (VDev *)(filemap[fd]->cdev);
VDev *dev = (VDev *)(filemap[fd]->vdev);
PX4_DEBUG("px4_read fd = %d\n", fd);
ret = dev->read(filemap[fd], (char *)buffer, buflen);
}
@@ -152,7 +152,7 @@ ssize_t px4_write(int fd, const void *buffer, size_t buflen)
{
int ret = PX4_ERROR;
if (valid_fd(fd)) {
VDev *dev = (VDev *)(filemap[fd]->cdev);
VDev *dev = (VDev *)(filemap[fd]->vdev);
PX4_DEBUG("px4_write fd = %d\n", fd);
ret = dev->write(filemap[fd], (const char *)buffer, buflen);
}
@@ -169,7 +169,7 @@ int px4_ioctl(int fd, int cmd, unsigned long arg)
{
int ret = PX4_ERROR;
if (valid_fd(fd)) {
VDev *dev = (VDev *)(filemap[fd]->cdev);
VDev *dev = (VDev *)(filemap[fd]->vdev);
PX4_DEBUG("px4_ioctl fd = %d\n", fd);
ret = dev->ioctl(filemap[fd], cmd, arg);
}
@@ -206,7 +206,7 @@ int px4_poll(px4_pollfd_struct_t *fds, nfds_t nfds, int timeout)
// If fd is valid
if (valid_fd(fds[i].fd))
{
VDev *dev = (VDev *)(filemap[fds[i].fd]->cdev);;
VDev *dev = (VDev *)(filemap[fds[i].fd]->vdev);;
PX4_DEBUG("px4_poll: VDev->poll(setup) %d\n", fds[i].fd);
ret = dev->poll(filemap[fds[i].fd], &fds[i], true);
@@ -250,7 +250,7 @@ int px4_poll(px4_pollfd_struct_t *fds, nfds_t nfds, int timeout)
// If fd is valid
if (valid_fd(fds[i].fd))
{
VDev *dev = (VDev *)(filemap[fds[i].fd]->cdev);;
VDev *dev = (VDev *)(filemap[fds[i].fd]->vdev);;
PX4_DEBUG("px4_poll: VDev->poll(teardown) %d\n", fds[i].fd);
ret = dev->poll(filemap[fds[i].fd], &fds[i], false);
@@ -269,5 +269,10 @@ cleanup:
return count;
}
void px4_show_devices()
{
VDev::showDevices();
}
}