コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2025年5月5日 >>> 2025年4月22日
link もっと後

2025年5月5日

timespecの操作関数

目次: C言語とlibc

POSIXには時間を表す構造体が2つあります。マイクロ秒単位のstruct timevalと、ナノ秒単位のstruct timespecです。struct timespecの方が後発なのか、比較的新しいAPIはstruct timespecを使う傾向にありますが、基本的には混在しています。

timevalとtimespec

struct timeval {
    time_t      tv_sec;     /* 秒 */
    suseconds_t tv_usec;    /* マイクロ秒 */
};

struct timespec {
    time_t tv_sec;     /* 秒 */
    long   tv_nsec;    /* ナノ秒 */
};

見てのとおり構造体ですから、足し算や引き算をするにも桁上がりを考える必要があって一苦労必要かと思いきや、POSIXはtimeradd/timersubなどのマクロを用意しており、struct timevalの加減算と比較などが比較的簡単に行えます。便利ですね。

ではstruct timespecにも同様にtimespecadd/timespecsubがあると思いますよね?ところが一部のlibc(BSD系やnewlib)以外は実装していません。なぜ……!?

timeraddのtimespec版

#define timespecadd(a, b, res)					\
	do {							\
		(res)->tv_sec = (a)->tv_sec + (b)->tv_sec;	\
		(res)->tv_nsec = (a)->tv_nsec + (b)->tv_nsec;	\
		if ((res)->tv_nsec >= 1000000000) {		\
			(res)->tv_sec++;			\
			(res)->tv_nsec -= 1000000000;		\
		}						\
	} while (0)
#define timespecsub(a, b, res)					\
	do {							\
		(res)->tv_sec = (a)->tv_sec - (b)->tv_sec;	\
		(res)->tv_nsec = (a)->tv_nsec - (b)->tv_nsec;	\
		if ((res)->tv_nsec < 0) {			\
			(res)->tv_sec--;			\
			(res)->tv_nsec += 1000000000;		\
		}						\
	} while (0)
#define timespecclear(tsp)    ((tsp)->tv_sec = (tsp)->tv_nsec = 0)
#define timespecisset(tsp)    ((tsp)->tv_sec || (tsp)->tv_nsec)
#define timespeccmp(a, b, cmp)					\
	(((a)->tv_sec == (b)->tv_sec) ?				\
		((a)->tv_nsec cmp (b)->tv_nsec) :		\
		((a)->tv_sec cmp (b)->tv_sec))

いつもstruct timespecを要求するAPIを使うたびにtimespecadd/timespecsubがなくて演算しづらさにイライラするので、コピペで使い回せるように実装例をメモしておきます。この程度なら誰が書いてもほとんど同じコードになると思いますが、気になる方のためにもし著作権が発生する場合はBSD 3条項ライセンス扱いでお願いします。

編集者:すずき(2025/05/16 23:40)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2025年5月1日

首都高バトルSteam版、フルチューン後の姿 - その3

目次: ゲーム

首都高バトル(Steam版)高ランクの車をひたすらフルチューンするやつの続きです。前回と合わせて8車種ほどフルチューンしました。もう飽きました。


SUZUKI SWIFT Sport(ZC33S)フルチューン


TOYOTA SUPRA RZ(JZA80)フルチューン

検索用にフルチューン後の主要パラメータを書いておきます。ちなみにスピード指標はギア比を最高速重視にすると高い数値になるので、参考程度です。

車種最高出力最大トルクスピード指標重量
SWIFT Sport(ZC33S) '22241PS/5,600rpm42kg/2,800rpm348.40949kg
SUPRA RZ(JZA80) '97 435PS/5,600rpm74kg/3,600rpm419.781,480kg

あとはインプレッサのどれかをフルチューンするかもなあくらいですが、あまり気力が沸きません。

ローダウンの謎

アップデート前は車高は下げれば下げるほどカーブが速くなる謎システムでしたが、アップデート後は限界まで車高を下げるとストレートで地面と擦って火花が出る&逆に遅くなる変更が入ったそうです。キャプチャでは5段階のうち4まで下げた状態で撮っています。個人的には見た目は3か2くらいが一番バランスが良いですね。


RX-7のフロントRIDE HIGHT = -5

5まで下げるとおかしなことが起きる車もあって、RX-7はフロントを限界まで下げるとタイヤがフェンダーとボンネットを貫通して変な表示になります……。

編集者:すずき(2025/05/05 12:18)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2025年5月5日 >>> 2025年4月22日
link もっと後

管理用メニュー

link 記事を新規作成

<2025>
<<<05>>>
----123
45678910
11121314151617
18192021222324
25262728293031

最近のコメント5件

  • link 24年6月17日
    すずきさん (06/05 23:32)
    「Thnaks for your info...」
  • link 24年6月17日
    Bobさん (06/04 09:25)
    「BindIPv6Only=no does...」
  • link 18年8月12日
    すずきさん (05/29 16:57)
    「コメントありがとうございます。\n\nこ...」
  • link 18年8月12日
    ARM926EJ-Sさん (05/29 14:27)
    「この記事が書かれたのは2018年ですが、...」
  • link 17年9月3日
    すずきさん (05/26 23:59)
    「>ちょさんさん\nご参考になれば幸いです...」

最近の記事20件

  • link 21年12月28日
    すずき (06/22 23:33)
    「[ゲーム - まとめリンク] 目次: ゲーム一覧が欲しくなったので作りました。Wizardry(囚われし亡霊の街)敵が強すぎる...」
  • link 25年6月19日
    すずき (06/22 23:33)
    「[歴代据え置きハードのCPUとGPU] 目次: ゲーム最近、据え置きハードのCPUとGPUがNVIDIAとAMDに収束していま...」
  • link 25年6月18日
    すずき (06/22 23:33)
    「[Nintendo Switch 2当選] 目次: ゲームSwitch 2の抽選4回目で当選してました。わーい。今回も落選だっ...」
  • link 10年4月17日
    すずき (06/13 21:41)
    「[何もしていないのに負荷が高いWindows 7] 目次: WindowsWindows 7は何もしていなくても常時CPU負荷...」
  • link 23年9月11日
    すずき (06/12 02:52)
    「[Windows - まとめリンク] 目次: Windows使いづらいWindows 7のエクスプローラ何もしていないのに負荷...」
  • link 10年4月10日
    すずき (06/12 02:52)
    「[使いづらいWindows 7のエクスプローラ] 目次: Windows週末を利用して旧マシンを葬って、新マシンを立ち上げまし...」
  • link 10年4月23日
    すずき (06/12 02:49)
    「[Windows 7のオーディオ処理負荷] 目次: Windows先日の日記(2010年4月17日の日記を参照)で書いたWin...」
  • link 10年4月25日
    すずき (06/12 02:48)
    「[Windows 7のサウンド機能は辛いよ] 目次: WindowsWindows Vista/7はサウンド周りがXPの頃と比...」
  • link 10年5月11日
    すずき (06/12 02:46)
    「[Sound Blaster X-Fiの話の訂正] 目次: Windows以前(2010年5月4日の日記を参照)書いた内容の訂...」
  • link 10年5月4日
    すずき (06/12 02:45)
    「[Sound Blaster X-Fiのサウンド設定いじってばっかり] 目次: Windows今使っているPCで激しく失敗した...」
  • link 10年5月12日
    すずき (06/12 02:43)
    「[Sound Blaster X-Fiのドライバが劣化] 目次: WindowsWindows UpdateにてCreativ...」
  • link 25年6月7日
    すずき (06/12 00:28)
    「[THPを一時的に無効にする方法] 目次: Linux何か訳があってLinuxのTHP(Transparent HugePag...」
  • link 25年6月6日
    すずき (06/11 00:49)
    「[新しめのRaspberry Pi OS LiteをQEMUで使う] 目次: Linux以前(2022年2月2日の日記参照)、...」
  • link 23年4月10日
    すずき (06/11 00:48)
    「[Linux - まとめリンク] 目次: Linux関係の深いまとめリンク。目次: RISC-V目次: ROCK64/ROCK...」
  • link 23年5月15日
    すずき (06/10 15:39)
    「[車 - まとめリンク] 目次: 車三菱FTOの話。群馬県へのドライブ1群馬県へのドライブ2将来車を買い替えるとしたら?FTO...」
  • link 22年1月22日
    すずき (06/10 15:38)
    「[バッテリーなんですぐ死んでしまうん?] 目次: 車正月、北海道から帰ってきて車の様子を見たら、完全にバッテリーが上がっていま...」
  • link 13年3月20日
    すずき (06/10 15:35)
    「[車が故障した(Er HC)] 目次: 車今朝、同期の人たちと梅見に行くため車で出発しようとしたのですが、キーをSTARTまで...」
  • link 16年5月1日
    すずき (06/09 03:10)
    「[自作ARMエミュレータでLinux 4.4が動かなかった] 目次: LinuxLinux 4.4系がLongtermの仲間入...」
  • link 16年4月30日
    すずき (06/09 03:08)
    「5月1日と全く同じ内容を書いていたので削除。...」
  • link 17年1月5日
    すずき (06/09 02:56)
    「[ノートPCのメモリが足りない] 目次: PC我が家のノートPC(Lenovo ThinkPad Edge E420, Win...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 2025年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www2.katsuster.net
RDFファイル RSS 1.0

最終更新: 06/22 23:33