yaffs2 源码错误 too few arguments to function 'yaffs_flush_file' 2014.10.11

来自:http://blog.csdn.net/cinmyheart/article/details/38747505

yaffs2 源码错误

错误:

2014-08-06

Charles Mannin

版本的 yaffs 有误!

yaffs_flush_file的定义:

source file :yaffs_guts.c

[cpp] view plaincopyprint?

  1. int yaffs_flush_file(struct yaffs_obj *in,
  2. int update_time,
  3. int data_sync,
  4. int discard_cache)
  5. {
  6. if (!in->dirty)
  7. return YAFFS_OK;
  8. yaffs_flush_file_cache(in, discard_cache);
  9. if (data_sync)
  10. return YAFFS_OK;
  11. if (update_time)
  12. yaffs_load_current_time(in, 0, 0);
  13. return (yaffs_update_oh(in, NULL, 0, 0, 0, NULL) >= 0) ?
  14. YAFFS_OK : YAFFS_FAIL;
  15. }

yafss_vfs.c

[cpp] view plaincopyprint?

  1. #if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 17))
  2. static int yaffs_file_flush(struct file *file, fl_owner_t id)
  3. #else
  4. static int yaffs_file_flush(struct file *file)
  5. #endif
  6. {
  7. struct yaffs_obj *obj = yaffs_dentry_to_obj(file->f_dentry);
  8. struct yaffs_dev *dev = obj->my_dev;
  9. yaffs_trace(YAFFS_TRACE_OS,
  10. "yaffs_file_flush object %d (%s)",
  11. obj->obj_id,
  12. obj->dirty ? "dirty" : "clean");
  13. yaffs_gross_lock(dev);
  14. yaffs_flush_file(obj, 1, 0);
  15. yaffs_gross_unlock(dev);
  16. return 0;
  17. }

看过yaffs_flush_file的定义之后,发现这里应该输入四个参数,但是这里只有三个参数传入,编译器报错

同样的

[cpp] view plaincopyprint?

  1. #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39))
  2. static int yaffs_sync_object(struct file *file, loff_t start, loff_t end, int datasync)
  3. #elif (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 34))
  4. static int yaffs_sync_object(struct file *file, int datasync)
  5. #else
  6. static int yaffs_sync_object(struct file *file, struct dentry *dentry,
  7. int datasync)
  8. #endif
  9. {
  10. struct yaffs_obj *obj;
  11. struct yaffs_dev *dev;
  12. #if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 34))
  13. struct dentry *dentry = file->f_path.dentry;
  14. #endif
  15. obj = yaffs_dentry_to_obj(dentry);
  16. dev = obj->my_dev;
  17. yaffs_trace(YAFFS_TRACE_OS | YAFFS_TRACE_SYNC,
  18. "yaffs_sync_object");
  19. yaffs_gross_lock(dev);
  20. yaffs_flush_file(obj, 1, datasync);
  21. yaffs_gross_unlock(dev);
  22. return 0;
  23. }

yaffs_sync_object里面的yaffs_flush_file也只有三个参数传入和定义不符合

[cpp] view plaincopyprint?

    1. void yaffs_flush_whole_cache(struct yaffs_dev *dev, int discard)
    2. {
    3. struct yaffs_obj *obj;
    4. int n_caches = dev->param.n_caches;
    5. int i;
    6. /* Find a dirty object in the cache and flush it...
    7. * until there are no further dirty objects.
    8. */
    9. do {
    10. obj = NULL;
    11. for (i = 0; i < n_caches && !obj; i++) {
    12. if (dev->cache[i].object && dev->cache[i].dirty)
    13. obj = dev->cache[i].object;
    14. }
    15. if (obj)
    16. yaffs_flush_file_cache(obj, discard);
    17. } while (obj);
    18. }

yaffs2 源码错误 too few arguments to function 'yaffs_flush_file' 2014.10.11

时间: 2024-10-26 16:24:40

yaffs2 源码错误 too few arguments to function 'yaffs_flush_file' 2014.10.11的相关文章

用idea编译Spring源码错误问题记录

相关参考网站: 1.spring源码导入出错 CoroutinesUtils报错 2.spring源码构建时缺失spring-cglib-repack和spring-objenesis-repack的正确处理姿势 3.IDEA导入Spring5.x 编译流程 解决编译符号报错 第二篇 最近在阅读<Spring源码深度解析(第2版)>-郝佳 这本书,第一章就是源码环境搭建,从github上把spring拉下来进行编译,除了书中遇到的问题外,还遇到了其他的问题,这里做个记录. idea版本: sp

jsoncpp-src-0.5.0.tar.gz 源码错误!!!!

近期在做毕设,使用到了JsonCpp0.5.0版本号的源码! 依照网上的安装配置教程,搭建好环境后就能够使用了! 在这里就不浪费空间去将怎样搭建开发环境了!请大家去google一下就好了! 在解析一个Json文件时.程序总是在某个地方出错! 開始还以为是TXT文件的格式不正确,还特意找了一个json文件来搞!这时发下这个json文件却执行通过! 难道真的是文件的问题!我将我的TXT文件逐渐简化,可是还是出问题,而其问题不是出在我的代码中.难道是JsonCpp的源码出现了问题!真的不敢相信!! 我

Mybatis源码解析(一)(2015年06月11日)

一.简介 先看看Mybatis的源码结构图,Mybatis3.2.7版本包含的包共计19个,其他版本可能会少. 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的,SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得,而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例.

Redis源码分析(三十六)--- Redis中的11大优秀设计

坚持了一个月左右的时间,从最开始的对Redis的代码做分类,从struct结构体分析开始,到最后分析main主程序结束,中间,各大模块的代码逐个击破,学习,总之,收获了非常多,好久没有这么久的耐心把一个框架学透,学习一个框架,会用那只是小小的一部分,能把背后的原理吃透才是真功夫.在这个学习的最后阶段,是时候要来点干货了,我把这1个多月来的一些总结的一些比较好的代码,和设计思想总结出来了,原本想凑成10大精彩设计的,可后来感觉每个点都挺精彩的,还是做成了11大优秀设计,包证让你打开研究,这里无关语

bootstrap源码分析之下拉菜单 (+function ($) { &quot;use strict&quot;;}(window.jQuery);全面分析)

<div class="dropdown"> <a id="dLabel" data-target="#" href="http://example.com" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> Dr

模拟jQuery底层源码的链式调用和常用的$()方法的实现

最近在看jQuery框架的源码,感觉还是学到不少东西的,所以就想总结一下自己的知识,和广大的前端爱好者一起 交流一下,我下面所说的并不是直接对jQuery的源码来解读,我是模拟一下jQuery底层源码的链式调用大概是怎么 实现的和常用的$功能是怎么实现的.好了废话不多说了.你要看这个,你就要对jQuery有一定的了解,最起码你要用过jQuery.首先看下jQuery的源码开始是怎么写的 (function( window, undefined){    })(window);它的代码就是被这个块

Zepto源码分析-event模块

源码注释 // Zepto.js // (c) 2010-2015 Thomas Fuchs // Zepto.js may be freely distributed under the MIT license. ;(function($){ var _zid = 1, undefined, slice = Array.prototype.slice, isFunction = $.isFunction, isString = function(obj){ return typeof obj

dojo/query源码解析

dojo/query模块是dojo为开发者提供的dom查询接口.该模块的输出对象是一个使用css选择符来查询dom元素并返回NodeList对象的函数.同时,dojo/query模块也是一个插件,开发者可以使用自定义的查询引擎,query模块会负责将引擎的查询结果包装成dojo自己的NodeList对象. require(["dojo/query!sizzle"], function(query){ query("div")... 要理解这个模块就要搞清楚两个问题:

判断手机wap网站跳转源码

简单方法:通过百度Site APP进行判断: 在网页头部中嵌入如下代码: <script src="http://siteapp.baidu.com/static/webappservice/uaredirect.js" type="text/javascript"></script> <script type="text/javascript">uaredirect("http://m.baidu.