Delayed write file handling
Hello all, not sure if this is the right place to ask, but there maybe something in boost that can help. I would like to use/write some file handling classes that implement something like delayed writing. The reason is that on our embedded device, we need to log information to flash memory. This information may be generated very frequently (every second or more). However, since our devices are in the field for long periods of time (8-10 years) this means that to continually be writing to flash memory, we can reach the limit of the capability of the flash re-write cycle (10k to 1mill erases before failure depending on quality), even when using a load levelling fs like Jffs2 (running on Linux). By delaying to write of the logging information so that the classes 'cache' data until either told to write by the system, or a time limit is reached, we can dramatically reduce the amount of flash erasing done. I would like to do this transparently to the end user, by perhaps writing a iostream class that handles it all (with some extra bits to handle urgent shutdowns and user requested flushes). My question is this - does Boost provide anything that does this already (or does anyone know of anything that does), or am I looking at this the wrong way? Should I look at boost filesystem, and provide extra bits to implement what we need? Alternatives? James Hughes
On 4/10/06, James Hughes
My question is this - does Boost provide anything that does this already (or does anyone know of anything that does), or am I looking at this the wrong way? Should I look at boost filesystem, and provide extra bits to implement what we need? Alternatives?
I'm not certain that you need Boost for this. streambufs are already designed to buffer information, so simply providing a large enough buffer for the amount of information generated on average in the time span you wish between writes ought to limit writes enough for your application. The main issue I foresee would be insuring that std::endl isn't used when you don't want the flush and insuring that the implementations of your streambufs actually use the buffer as you're expecting. ~ SWMc
participants (2)
-
James Hughes
-
me22