jiffies到底是多长时间?(总分值120分!!!)

网桥那段有一个创建fdb-entry的代码,jiffies是定时器时间。

static struct net_bridge_fdb_entry *fdb_create(struct hlist_head *head,
  struct net_bridge_port *source,
  const unsigned char *addr,
  int is_local)
{
struct net_bridge_fdb_entry *fdb;
fdb = kmem_cache_alloc(br_fdb_cache, GFP_ATOMIC);
if (fdb) {
memcpy(fdb->addr.addr, addr, ETH_ALEN);
atomic_set(&fdb->use_count, 1);
hlist_add_head_rcu(&fdb->hlist, head);
fdb->dst = source;
fdb->is_local = is_local;
fdb->is_static = is_local;
fdb->ageing_timer = jiffies;

而jiffies的定义如下:
# define jiffies raid6_jiffies()

static inline uint32_t raid6_jiffies(void)
{
  struct timeval tv;
  gettimeofday(&tv, NULL);
  return tv.tv_sec*1000 + tv.tv_usec/1000;
}

我查了下gettimeofday 和 struct timeval tv 的结构,惊讶的发现定了一个超长的时间。

我理解,tv.tv_sec(秒数) * 1000 + 微秒/1000 应该是大于 三小时的一个数吧?

当前秒数如果是1,那么也是16分钟啊。。。。。。。取均值30,则是8小时。。。。

这个判断正确否?无论如何,我觉得fdb默认的定时器时间超过三小时,都是非常让人不理解的一件事。

所以我觉得我上面的逻辑可能哪里有问题。极可能定时的时间是一个分钟级的数字。

烦请大伙赐教!!

可怜的楼主以前发过一个100分的帖子,一个回复都没有,楼主滴分都给不出去,一起在本贴给了吧。

高手们解答了本贴,也烦请移步去这个帖子留个名,楼主会参照本贴的回复含金量,大把给分~~~~

http://topic.csdn.net/u/20110418/20/048ae2ed-17ba-4fad-b1a1-6b960711ad24.html

作者: jiahehao   发布时间: 2011-05-05

jiffies只是一个时间戳值。
更多时间是用其它来作定时使用。
例:
  unsigned long j = jiffies
  unsigned long stamp = j + HZ

作者: voice_shen   发布时间: 2011-05-05

引用 1 楼 voice_shen 的回复:
jiffies只是一个时间戳值。
更多时间是用其它来作定时使用。
例:
unsigned long j = jiffies
unsigned long stamp = j + HZ


再分析
jiffies的计数增加,是根据HZ的值面而变化的。
如果 HZ=100, 1个jiffies = 10 ms
如果 HZ=1000, 1个jiffies = 1 ms

作者: voice_shen   发布时间: 2011-05-05

引用 2 楼 voice_shen 的回复:
引用 1 楼 voice_shen 的回复:
jiffies只是一个时间戳值。
更多时间是用其它来作定时使用。
例:
unsigned long j = jiffies
unsigned long stamp = j + HZ


再分析
jiffies的计数增加,是根据HZ的值面而变化的。
如果 HZ=100, 1个jiffies = 10 ms
如果 HZ=1000, 1……



顶一个

作者: yong_f   发布时间: 2011-05-05