RE: [PATCH] ACPI: Add identification objects' user interface.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> > ACPI devices are glued with physical devices through _ADR object, ACPI
> > enumerated devices are identified with _UID object.  Currently we can
> > observe _HID/_CID through sysfs interfaces (hid/modalias), but there's
> > no mean for us to check _ADR/_UID from user space.  This patch fix
> > this gap for ACPI developers and users.
> >
> why do we need to get this information from userspace?

Developers may want to check _ADR from user land to see whether the glue implementation is correct.
Same situation may be encountered on _UID.

We may discuss here to see whether the two files are required for ACPI users.
Thus this optional feature hasn't been combined with the former _UID enabling one.

Best regards/Lv Zheng

> > Signed-off-by: Lv Zheng <lv.zheng@xxxxxxxxx>
> > ---
> >  drivers/acpi/scan.c |   25 +++++++++++++++++++++++++
> >  1 file changed, 25 insertions(+)
> >
> > diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c index
> > bb7fe47..df53190 100644
> > --- a/drivers/acpi/scan.c
> > +++ b/drivers/acpi/scan.c
> > @@ -216,6 +216,22 @@ acpi_device_hid_show(struct device *dev, struct
> > device_attribute *attr, char *bu  static DEVICE_ATTR(hid, 0444,
> > acpi_device_hid_show, NULL);
> >
> >  static ssize_t
> > +acpi_device_uid_show(struct device *dev, struct device_attribute *attr,
> char *buf) {
> > +	struct acpi_device *acpi_dev = to_acpi_device(dev);
> > +
> > +	return sprintf(buf, "%s\n", acpi_dev->pnp.unique_id); } static
> > +DEVICE_ATTR(uid, 0444, acpi_device_uid_show, NULL);
> > +
> > +static ssize_t
> > +acpi_device_adr_show(struct device *dev, struct device_attribute *attr,
> char *buf) {
> > +	struct acpi_device *acpi_dev = to_acpi_device(dev);
> > +
> > +	return sprintf(buf, "0x%08x\n", (unsigned
> > +int)(acpi_dev->pnp.bus_address)); } static DEVICE_ATTR(adr, 0444,
> > +acpi_device_adr_show, NULL);
> > +
> > +static ssize_t
> >  acpi_device_path_show(struct device *dev, struct device_attribute *attr,
> char *buf) {
> >  	struct acpi_device *acpi_dev = to_acpi_device(dev);
> >  	struct acpi_buffer path = {ACPI_ALLOCATE_BUFFER, NULL}; @@ -257,6
> > +273,11 @@ static int acpi_device_setup_files(struct acpi_device *dev)
> >  			goto end;
> >  	}
> >
> > +	if (dev->flags.bus_address)
> > +		result = device_create_file(&dev->dev, &dev_attr_adr);
> > +	if (dev->pnp.unique_id)
> > +		result = device_create_file(&dev->dev, &dev_attr_uid);
> > +
> >          /*
> >           * If device has _EJ0, 'eject' file is created that is used to trigger
> >           * hot-removal function from userland.
> > @@ -281,6 +302,10 @@ static void acpi_device_remove_files(struct
> acpi_device *dev)
> >  	if (ACPI_SUCCESS(status))
> >  		device_remove_file(&dev->dev, &dev_attr_eject);
> >
> > +	if (dev->pnp.unique_id)
> > +		device_remove_file(&dev->dev, &dev_attr_uid);
> > +	if (dev->flags.bus_address)
> > +		device_remove_file(&dev->dev, &dev_attr_adr);
> >  	device_remove_file(&dev->dev, &dev_attr_modalias);
> >  	device_remove_file(&dev->dev, &dev_attr_hid);
> >  	if (dev->handle)

��.n��������+%������w��{.n�����{�����ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f



[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux