Document of c-modernization-kit (porter) 1.0.0
Loading...
Searching...
No Matches
seqnum.c File Reference

通番管理モジュール。 More...

#include <stddef.h>
#include <stdint.h>
#include "seqnum.h"
Include dependency graph for seqnum.c:

Go to the source code of this file.

Functions

void seqnum_init (uint32_t *seq, uint32_t initial)
 通番を初期化します。
uint32_t seqnum_next (uint32_t *seq)
 通番を 1 進めて次の値を返します。
int seqnum_is_newer (uint32_t a, uint32_t b)
 通番 a が通番 b より新しいかどうかを判定します。
int seqnum_in_window (uint32_t seq, uint32_t base, uint16_t window_size)
 通番 seq がウィンドウ [base, base + window_size) に含まれるか判定します。

Detailed Description

通番管理モジュール。

Author
c-modernization-kit sample team
Date
2026/03/04
Version
1.0.0

Definition in file seqnum.c.

Function Documentation

◆ seqnum_init()

void seqnum_init ( uint32_t * seq,
uint32_t initial )

通番を初期化します。

Parameters
[out]seq初期化する通番へのポインタ。
[in]initial初期値。

Definition at line 26 of file seqnum.c.

◆ seqnum_next()

uint32_t seqnum_next ( uint32_t * seq)

通番を 1 進めて次の値を返します。

Parameters
[in,out]seq通番へのポインタ。
Returns
インクリメント後の通番。seq が NULL の場合は 0 を返します。

uint32_t の最大値に達した場合は 0 に折り返します。

Definition at line 45 of file seqnum.c.

◆ seqnum_is_newer()

int seqnum_is_newer ( uint32_t a,
uint32_t b )

通番 a が通番 b より新しいかどうかを判定します。

Parameters
[in]a比較対象の通番 A。
[in]b比較対象の通番 B。
Returns
a が b より新しい場合は 1、そうでない場合は 0 を返します。

uint32_t 折り返しを考慮した比較を行います。
差が UINT32_MAX / 2 以下の場合に「a が新しい」と判定します。

Definition at line 66 of file seqnum.c.

◆ seqnum_in_window()

int seqnum_in_window ( uint32_t seq,
uint32_t base,
uint16_t window_size )

通番 seq がウィンドウ [base, base + window_size) に含まれるか判定します。

Parameters
[in]seq判定する通番。
[in]baseウィンドウ先頭の通番。
[in]window_sizeウィンドウサイズ (パケット数)。
Returns
ウィンドウ内の場合は 1、ウィンドウ外の場合は 0 を返します。

Definition at line 80 of file seqnum.c.

Referenced by recv_thread_func(), window_recv_push(), and window_send_get().

Here is the caller graph for this function: