+static int yaffs_debug_proc_read(char *page,
+ char **start,
+ off_t offset, int count, int *eof, void *data)
+{
+ struct ylist_head *item;
+ char *buf = page;
+ int n = 0;
+
+ down(&yaffs_context_lock);
+
+ /* Locate and print the Nth entry. Order N-squared but N is small. */
+ ylist_for_each(item, &yaffs_context_list) {
+ struct yaffs_LinuxContext *dc = ylist_entry(item, struct yaffs_LinuxContext, contextList);
+ yaffs_Device *dev = dc->dev;
+
+ int erasedChunks;
+ int nObjects;
+ int nTnodes;
+
+ erasedChunks = dev->nErasedBlocks * dev->param.nChunksPerBlock;
+ nObjects = dev->nObjectsCreated -dev->nFreeObjects;
+ nTnodes = dev->nTnodesCreated - dev->nFreeTnodes;
+
+
+ buf += sprintf(buf,"%d, %d, %d, %d, %d\n",
+ n, dev->nFreeChunks, erasedChunks,
+ nObjects, nTnodes);
+ }
+ up(&yaffs_context_lock);
+
+
+ return buf - page < count ? buf - page : count;
+}
+