diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c index 8bba465..c7d0607 100644 --- a/drivers/dahdi/dahdi-base.c +++ b/drivers/dahdi/dahdi-base.c @@ -50,6 +50,7 @@ #include #include #include +#include #if defined(HAVE_UNLOCKED_IOCTL) && defined(CONFIG_BKL) #include @@ -7404,6 +7405,7 @@ static int _dahdi_register_device(struct dahdi_device *ddev, __dahdi_init_span(s); } + getnstimeofday(&ddev->registration_time); ret = dahdi_sysfs_add_device(ddev, parent); if (ret) return ret; diff --git a/drivers/dahdi/dahdi-sysfs.c b/drivers/dahdi/dahdi-sysfs.c index fea0cc1..7cd26e3 100644 --- a/drivers/dahdi/dahdi-sysfs.c +++ b/drivers/dahdi/dahdi-sysfs.c @@ -677,6 +677,19 @@ dahdi_spantype_store(struct device *dev, struct device_attribute *attr, return (ret < 0) ? ret : count; } +static ssize_t +dahdi_registration_time_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct dahdi_device *ddev = to_ddev(dev); + int count = 0; + + count += sprintf(buf, "%010ld.%09ld\n", + ddev->registration_time.tv_sec, + ddev->registration_time.tv_nsec); + return count; +} + static struct device_attribute dahdi_device_attrs[] = { __ATTR(manufacturer, S_IRUGO, dahdi_device_manufacturer_show, NULL), __ATTR(type, S_IRUGO, dahdi_device_type_show, NULL), @@ -688,6 +701,7 @@ static struct device_attribute dahdi_device_attrs[] = { __ATTR(unassign_span, S_IWUSR, NULL, dahdi_device_unassign_span), __ATTR(spantype, S_IWUSR | S_IRUGO, dahdi_spantype_show, dahdi_spantype_store), + __ATTR(registration_time, S_IRUGO, dahdi_registration_time_show, NULL), __ATTR_NULL, }; diff --git a/include/dahdi/kernel.h b/include/dahdi/kernel.h index eef65a9..dabd123 100644 --- a/include/dahdi/kernel.h +++ b/include/dahdi/kernel.h @@ -941,6 +941,7 @@ struct dahdi_device { const char *devicetype; struct device dev; unsigned int irqmisses; + struct timespec registration_time; }; struct dahdi_span {