svn commit: r295760 - head/usr.sbin/pciconf

Stefan Esser se at freebsd.org
Thu Feb 18 20:15:56 UTC 2016


Am 18.02.2016 um 19:07 schrieb John Baldwin:
> On Thursday, February 18, 2016 03:23:26 PM Stefan Esser wrote:
>> Author: se
>> Date: Thu Feb 18 15:23:25 2016
>> New Revision: 295760
>> URL: https://svnweb.freebsd.org/changeset/base/295760
>>
>> Log:
>>   Make WARNS=6 safe.
>>   
>>   Tested with Clang 3.7.1, GCC 4.2.1 and GCC 4.8.5 on amd64.
> 
> Thanks.
> 
>> Modified: head/usr.sbin/pciconf/cap.c
>> ==============================================================================
>> --- head/usr.sbin/pciconf/cap.c	Thu Feb 18 15:12:52 2016	(r295759)
>> +++ head/usr.sbin/pciconf/cap.c	Thu Feb 18 15:23:25 2016	(r295760)
>> @@ -120,6 +120,9 @@ static void
>>  cap_vpd(int fd, struct pci_conf *p, uint8_t ptr)
>>  {
>>  
>> +	(void)fd;	/* UNUSED */
>> +	(void)p;	/* UNUSED */
>> +	(void)ptr;	/* UNUSED */
>>  	printf("VPD");
>>  }
> 
> I think we prefer __unused in the parameter declaration instead?  That is:

Since I was not sure about the best way to silence this warning, I had
looked at the mail archive and found a mail thread from July 2012 with
subject "(void)foo or __unused foo ?". The cast to void seemed to be
the most portable method, but in fact I prefer the __unused modifier
myself.

> cap_vpd(int fd __unused, struct pci_conf *p __unused, uint8_t ptr __unused)

Yes, I'll commit that version in a minute.

>> @@ -172,6 +175,7 @@ cap_pcix(int fd, struct pci_conf *p, uin
>>  	}
>>  	if ((p->pc_hdr & PCIM_HDRTYPE) == 1)
>>  		return;
>> +	max_burst_read = 0;
>>  	switch (status & PCIXM_STATUS_MAX_READ) {
>>  	case PCIXM_STATUS_MAX_READ_512:
>>  		max_burst_read = 512;
> 
> Compilers are simply not smart enough. :-P

Well, clang-3.7.1 in -CURRENT is ...

But both gcc-4.2.1 and gcc-4.8.5 warn about a possibly uninitialized
variable.

I could have changed the last case selector into "default" to silence
the warning without need for an initializer before the switch statement,
but that would be too ugly and misleading.

>> Modified: head/usr.sbin/pciconf/pciconf.c
>> ==============================================================================
>> --- head/usr.sbin/pciconf/pciconf.c	Thu Feb 18 15:12:52 2016	(r295759)
>> +++ head/usr.sbin/pciconf/pciconf.c	Thu Feb 18 15:23:25 2016	(r295760)
>> @@ -913,7 +915,8 @@ parsesel(const char *str)
>>  		ep += 3;
>>  		i = 0;
>>  		do {
>> -			selarr[i++] = strtoul(ep, &ep, 10);
>> +		  selarr[i++] = strtoul(ep, &eppos, 10);
>> +		  ep = eppos;
>>  		} while ((*ep == ':' || *ep == '.') && *++ep != '\0' && i < 4);
> 
> This is now indented oddly (2 spaces instead of a tab?).

Sorry, the pciconf sources do not comply with "style" and I'm to blame,
since I committed the initial version nearly 20 years ago ...

But you are correct, I got even the wrong indentation wrong ;-)

Thank you for the review and your comments, I'll commit a fixed version
now.

Best regards, STefan


More information about the svn-src-head mailing list