Re: [Yaffs] BG GC with FreeRtos

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
Delete this message
Reply to this message
Author: Markus Bargehr
Date:  
To: Charles Manning
CC: yaffs
Subject: Re: [Yaffs] BG GC with FreeRtos
Hello Charles,

thank you for your reply!

I have not found the function yaffs_bg_gc_urgency() within the latest yaffs code.
Is this a special function only used on the Linux device?

I have found another code for a possible bg threat.
Do you think this could be ok for me as a bg thread using freertos?

void bg_gc_func ( void const * argument )
{
       struct yaffs_dev *dev;
       int urgent = 0;
       int result;
       int next_urgent;

       while ( 1 )
       {
             /* Iterate through devices, do bg gc updating ungency */
             yaffs_dev_rewind ( );
             next_urgent = 0;

             while ( ( dev = yaffs_next_dev ( ) ) != NULL )
             {
                    result = yaffs_do_background_gc_reldev ( dev, urgent );
                    if ( result > 0 )
                           next_urgent = 1;
             }

             urgent = next_urgent;

             if ( next_urgent )
             {
                    osDelay ( 1000 );
             }
             else
             {
                    osDelay ( 5000 );
             }
       }
       /* Don't ever return. */
}

Regards
Markus

Von: Charles Manning <>
Gesendet: Donnerstag, 25. Oktober 2018 22:21
An: Markus Bargehr <>
Cc: yaffs <>
Betreff: Re: [Yaffs] BG GC with FreeRtos


On Fri, Oct 26, 2018 at 12:46 AM Markus Bargehr <<mailto:markus.bargehr@gantnersolutions.com>> wrote:
Hello,

i’m new on Yaffs and now I ahve implemented Yaffs2 on an embedded System with FreeRTOS as OS.
It looks like that Yaffs work’s good. In some documentations I have read that it would be good to have a BG GC which should run every 2-5 seconds.
Is there someone which could show me an example code how such a BG GC Taks in FreeRTOS could kook like?

Regards
Markus


Hello Markus

Have a look in the Yaffs VFS code to see how it is done in Linux.
http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blob;f=yaffs_vfs_multi.c;h=de3dd75988ef7de715fd80ec28ff6b96e501a903;hb=HEAD#l2137

Pretty straight forward: Just set up a thread with the proper locking that occasionally calls

urgency = yaffs_bg_gc_urgency(dev);
gc_result = yaffs_bg_gc(dev, urgency);

Regards

Charles


_______________________________________________
yaffs mailing list
<mailto:yaffs@stoneboat.aleph1.co.uk>
http://stoneboat.aleph1.co.uk/cgi-bin/mailman/listinfo/yaffs