Bhindhiya,
Why not follow the approach taken by other arch?

On Fri, Sep 18, 2020 at 9:34 PM Bhindhiya Raja
<bhindhiy...@tataelxsi.co.in.invalid> wrote:
>
> Hello Team,
>
> We are trying to include Renesas RX65N architecture in GitHub pre-check which 
> requires code to have 0 warnings to be successful.
>
> Call to up_copystate() in the below functions produces warnings in NuttX 
> common files:
> arch/renesas/src/common/up_blocktask.c: up_block_task()
> arch/renesas/src/common/up_releasepending: up_release_pending()
> arch/renesas/src/common/up_reprioritizertr: up_reprioritize_rtr()
> arch/renesas/src/common/up_unblocktask: up_unblock_task()
>
> Changes in the above files will affect the other Renesas architectures (m16c 
> and sh1) as well.
>
> The function prototype of up_copystate() in file: 
> "arch/renesas/src/common/up_internal.h" is as follows:
> void up_copystate(uint32_t *dest, uint32_t *src);
>
> g_current_regs is also defined in the same file as:
> extern volatile uint32_t *g_current_regs;
>
> Calling up_copystate() with g_current_regs as 2nd argument gives the 
> following warning:
> passing argument 2 of ‘up_copystate’ discards ‘volatile’ qualifier from 
> pointer target type [-Werror]
> up_copystate(rtcb->xcp.regs, g_current_regs);
> ^
>
> The above call causes the 'volatile' nature of g_current_regs to be lost.
> We understand that casting away the 'volatile' type qualifier of a variable 
> should be avoided if possible.
>
> We intend to do a PR by modifying the prototype of the above function to:
> void up_copystate(uint32_t *dest, volatile uint32_t *src);
> This modification produces the same warning in memcpy() function call.
> Typecasting the argument when calling memcpy() alone will resolve this 
> warning.
>
> This retains the volatile nature of the variable as well as resolves the 
> warnings produced
> due to the above function call with volatile g_current_regs argument.
>
> Are there any concerns with the above mentioned modifications?
>
> Regards,
> Bhindhiya Raja.
> ________________________________
> From: Bhindhiya Raja <bhindhiy...@tataelxsi.co.in>
> Sent: Monday, September 14, 2020 5:09 PM
> To: dev@nuttx.apache.org <dev@nuttx.apache.org>
> Subject: Re: Warnings in Renesas common files
>
> Hello Greg and Nathan,
>
> Any input on the warnings generated due to the g_current_regs volatile type 
> qualifier?
>
> Best Regards,
>
> Bhindhiya Raja
>
>
> SBU | Engineer
>
> TATA ELXSI LIMITED
>
> ITPB Road Whitefield
>
> Bengaluru 560 048 India
>
> www.tataelxsi.com<https://apc01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.tataelxsi.com%2F&data=02%7C01%7Cbhindhiya.r%40tataelxsi.co.in%7C27f3ef9461c64949d6e508d832f8ecbc%7Cad6a39dd96b6436882daf2ec4d92e26a%7C0%7C0%7C637315393618704041&sdata=FdDPWsO9WgR7HscuY%2BLQkX1oTtr%2BuNpCgEl35LtrZZ8%3D&reserved=0>
>
> ________________________________
> From: Nathan Hartman <hartman.nat...@gmail.com>
> Sent: Saturday, September 5, 2020 3:51 AM
> To: dev@nuttx.apache.org <dev@nuttx.apache.org>
> Subject: Re: Warnings in Renesas common files
>
> ________________________________
>  **This is an external email. Please check the sender’s full email address 
> (not just the sender name) and exercise caution before you respond or click 
> any embedded link/attachment.**
> ________________________________
>
> On Fri, Sep 4, 2020 at 9:40 AM Bhindhiya Raja
> <bhindhiy...@tataelxsi.co.in.invalid> wrote:
> >
> > Hello Nathan,
> >
> > Thank you for your response. We have submitted 2 separate PRs as 
> > recommended by you to resolve warnings 6 (#1695) and 8 (#1702).
> >
> > About warnings 1 to 4, we understand that casting away the 'volatile' type 
> > qualifier of a variable should be avoided if possible. Can we consider 
> > modifying the prototype of the function up_copystate() in up_internal.h 
> > file,
> > from:
> > void up_copystate(uint32_t *dest, uint32_t *src);
> > to:
> > void up_copystate(uint32_t *dest, volatile uint32_t *src);
> > in order to resolve this warning.
> >
> > We have tried the above fix in our local repository and checked build.
> > We found that warnings 1 to 4 are resolved, however, it generates a new 
> > warning in file:
> > arch/renesas/src/rx65n/rx65n_copystate.c: passing argument 2 of 
> > ‘up_copystate’ discards ‘volatile’ qualifier from pointer target type
> > memcpy(dest, src, XCPTCONTEXT_SIZE);
> >
> > expected ‘const void *’ but argument is of type ‘volatile uint32_t *’
> > FAR void *memcpy(FAR void *dest, FAR const void *src, size_t n);
> >
> > This can be resolved by typecasting the variables when calling memcpy() 
> > alone.
> >
> > As these files are common to other Renesas architectures as well, please 
> > confirm if the above modifications are okay.
>
>
> Hello Bhindhiya,
>
> I am not sure what is the best choice here. I looked through NuttX
> sources and I did not see any up_copystate() (for any arch) that had
> volatile qualifiers. That said, looking at the call to up_copystate()
> in up_unblock_task(), g_current_regs is indeed volatile (for good
> reasons), so I wonder if we should propagate that as far as possible,
> until the memcpy(), like you're suggesting, or, alternatively, if it
> is safe to discard volatile like is being done already, because we are
> switching tasks.
>
> I need to think about this some more.
>
> Maybe Greg will share some of his wisdom with us. :-)
>
> Nathan
> ________________________________
> Disclaimer: This email and any files transmitted with it are confidential and 
> intended solely for the use of the individual or entity to whom they are 
> addressed. If you are not the intended recipient of this message , or if this 
> message has been addressed to you in error, please immediately alert the 
> sender by reply email and then delete this message and any attachments. If 
> you are not the intended recipient, you are hereby notified that any use, 
> dissemination, copying, or storage of this message or its attachments is 
> strictly prohibited. Email transmission cannot be guaranteed to be secure or 
> error-free, as information could be intercepted, corrupted, lost, destroyed, 
> arrive late or incomplete, or contain viruses. The sender, therefore, does 
> not accept liability for any errors, omissions or contaminations in the 
> contents of this message which might have occurred as a result of email 
> transmission. If verification is required, please request for a hard-copy 
> version.
> ________________________________

Reply via email to