RE: [PATCH] mips/include/asm/mipsregs.h: s/u16/unsigned short/

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

 



> -----Original Message-----
> From: David Daney [mailto:ddaney.cavm@xxxxxxxxx]
> Sent: 06 December 2013 16:48
> To: Qais Yousef
> Cc: linux-mips@xxxxxxxxxxxxxx
> Subject: Re: [PATCH] mips/include/asm/mipsregs.h: s/u16/unsigned short/
> 
> On 12/06/2013 08:35 AM, Qais Yousef wrote:
> >> -----Original Message-----
> >> From: David Daney [mailto:ddaney.cavm@xxxxxxxxx]
> >> Sent: 06 December 2013 16:32
> >> To: Qais Yousef
> >> Cc: linux-mips@xxxxxxxxxxxxxx
> >> Subject: Re: [PATCH] mips/include/asm/mipsregs.h: s/u16/unsigned
> >> short/
> >>
> >> On 12/06/2013 01:20 AM, Qais Yousef wrote:
> >>> I was getting this error when including this header in my driver:
> >>>
> >>>     arch/mips/include/asm/mipsregs.h:644:33: error: unknown type name
> ‘u16’
> >>>
> >>> since the use of u16 is not really necessary, convert it to unsigned short.
> >>>
> >>> Signed-off-by: Qais Yousef <qais.yousef@xxxxxxxxxx>
> >>> Reviewed-by: Steven J. Hill <Steven.Hill@xxxxxxxxxx>
> >>
> >> NAK.
> >>
> >> Just #include <linux/types.h> at the top of asm/mipsregs.h instead.
> >
> > Funnily that was my first solution before I changed it to this :)
> >
> > I'll resend but can you please give some explanation why changing u16 to
> unsigned short is bad?
> 
> This is the linux kernel.  People expect to see fixed width integer type definitions
> using the conventional u8, u16, u32, etc.
> 
> If you are doing something tricky enough that you need to explicitly use a type of
> a given width, don't hide the fact, bring it to our attention by using the kernel
> standard type.
> 
> If you don't need exactly a u16, just make it an unsigned int and be done with it.
> 
> It would appear that micro-MIPS instructions are 16 bit, so use u16 everywhere
> for them.

OK thanks for the explanation. u16 is more safe and future proof for sure.

> 
> Also it looks like this function really should be declared as returning type bool, not
> int.  For the same reason:  It cannot return any integer, only truth values.  Don't
> hide this fact.  Bring it to our attention by using the proper types.

I share this view about Booleans to be honest
http://article.gmane.org/gmane.linux.kernel/1554183/match=bool

v2 is on the way.

Thanks,
Qais

> 
> 
> David Daney
> 
> 
> >
> > Thanks,
> > Qais
> >
> >>
> >> David Daney
> >>
> >>
> >>> ---
> >>>    arch/mips/include/asm/mipsregs.h |    4 ++--
> >>>    1 files changed, 2 insertions(+), 2 deletions(-)
> >>>
> >>> diff --git a/arch/mips/include/asm/mipsregs.h
> >> b/arch/mips/include/asm/mipsregs.h
> >>> index e033141..0a2d6ef 100644
> >>> --- a/arch/mips/include/asm/mipsregs.h
> >>> +++ b/arch/mips/include/asm/mipsregs.h
> >>> @@ -641,9 +641,9 @@
> >>>     * microMIPS instructions can be 16-bit or 32-bit in length. This
> >>>     * returns a 1 if the instruction is 16-bit and a 0 if 32-bit.
> >>>     */
> >>> -static inline int mm_insn_16bit(u16 insn)
> >>> +static inline int mm_insn_16bit(unsigned short insn)
> >>>    {
> >>> -	u16 opcode = (insn >> 10) & 0x7;
> >>> +	unsigned short opcode = (insn >> 10) & 0x7;
> >>>
> >>>    	return (opcode >= 1 && opcode <= 3) ? 1 : 0;
> >>>    }
> >>>
> >


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux