目次: RISC-V
タイトルに反して実はRISC-Vはあまり関係ないですが……。GNU libcとmusl libcの実装を見ていたら、64bit環境でrebootシステムコールの引数magicに、
がいることに気づきました。
Cライブラリのrebootの関数宣言はint reboot(int cmd) となっています。musl libcの場合0xfee1deadをキャストせずlong型の引数に渡します。符号拡張は行われず0x00000000_fee1deadがシステムコールの引数に渡されます。
// musl/src/linux/reboot.c
int reboot(int type)
{
return syscall(SYS_reboot, 0xfee1dead, 672274793, type);
}
// musl/arch/riscv64/syscall_arch.h
static inline long __syscall3(long n, long a, long b, long c)
{
register long a7 __asm__("a7") = n;
register long a0 __asm__("a0") = a;
register long a1 __asm__("a1") = b;
register long a2 __asm__("a2") = c;
__asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2))
}
一方のGNU libcの場合は、0xfee1deadをintにキャストしてからシステムコールに渡します。この値は負の数なので符号拡張が行われて0xffffffff_fee1deadがシステムコールの引数に渡されます。
// glibc/sysdeps/unix/sysv/linux/reboot.c
/* Call kernel with additional two arguments the syscall requires. */
int
reboot (int howto)
{
return INLINE_SYSCALL (reboot, 3, (int) 0xfee1dead, 672274793, howto);
}
// glibc/sysdeps/unix/sysv/linux/riscv/sysdep.h
# define internal_syscall3(number, arg0, arg1, arg2) \
({ \
long int _sys_result; \
long int _arg0 = (long int) (arg0); \
long int _arg1 = (long int) (arg1); \
long int _arg2 = (long int) (arg2); \
\
{ \
register long int __a7 asm ("a7") = number; \
register long int __a0 asm ("a0") = _arg0; \
register long int __a1 asm ("a1") = _arg1; \
register long int __a2 asm ("a2") = _arg2; \
__asm__ volatile ( \
"scall\n\t" \
: "+r" (__a0) \
: "r" (__a7), "r" (__a1), "r" (__a2) \
: __SYSCALL_CLOBBERS); \
_sys_result = __a0; \
} \
_sys_result; \
})
最初に気づいたときはどちらかがバグっている……?と勘違いしましたが、当たり前ですがどちらも正常に動きます。すなわちLinux側で何か対応しているはずです。続きはまた今度。
目次: Linux
昨日(2023年1月26日の日記参照)の続きです。タイトルに「日本語 → 英語」の順の文字列を表示させると英語がズレてしまう問題についてです。
ルック&フィールの設定からフォントを変えて試したところ、源ノ角ゴシックの一部の太さ(Normalのみ)でこの問題が発生することが分かりました。実際に見てもらった方が分かりやすいと思います。
原因が良くわからないままですが、とりあえず源ノ角ゴシックを使うならNormal以外の太さを選択することで英語が上にズレてしまう問題を回避できそうです。
NormalだろうがRegularだろうが同じフォントだと思っていたんですけど、何か違うんでしょうか??フォントのレンダリングは良くわからないね……。
目次: Linux
タイトルのままなのですが、普段使いしているLinux環境(Debian Testing, LXDE)にて英語の位置がたまにズレていることがあります。どういうときにズレるのか気になったので、いくつかパターンを試しました。残念ながら原因や直し方までは調べていないので良くわかりません。
結論を先に書いておくと、日本語のあとに英語を書くとズレます。英語のあとに日本語を書いてもズレません。不思議ですね。
この画像をキャプチャしているときに気が付いたのですが、Leafpadのテキストボックスでも同じ現象が発生していました。
何なんでしょうね?GTK+ の仕様なんでしょうか?
NetFlixのような老舗に属するVODサービスって一時期に一気に増えたよね?という印象を持っていたのですが、調べたことがなかったので調べがてらメモしておきます。
ベンダー | 創業国 | 創業国サービスイン | 日本サービスイン |
---|---|---|---|
Amazon | アメリカ | 2006 | 2015/09 |
Hulu | アメリカ | 2007 | 2011/09 |
NetFlix | アメリカ | 2007 | 2015/09 |
U-NEXT | 日本 | 2007 | 同左 |
注意点としては創業 = サブスクリプション開始、ではないことです。今やVODサービスといえば定額制度(サブスクリプション制度、サブスク)が当たり前ですが、以前は1つの動画に1度支払う制度(PPV: Pay-Per-View制度)が普通でした。
したがって老舗VOD企業達も創業時にサブスクリプション制度を展開していたとは限りません。例えばHuluはPPVで参入、サブスク(Hulu Plus)の開始は2010年です。
といった細かい話をあえて無視すれば「老舗VOD企業は2007年に出揃った」と言ってしまって良いでしょう。
リモートワークが当たり前になり家に居る時間が長くなりました。当然、家に居れば電気を使いますので電気代も上がります。2021年はそれで説明が付いたんですけど、去年2022年の電気代はライフスタイルの変化では説明できないほど明らかに高いです。何が起きたの……??
まずは今までの電気使用量をおさらいします。あ、ちなみに契約している電力会社はSymEnergy(公式サイトへのリンク)という会社です。
電気代を使用量で割ってkWh平均、いわゆる単価相当の数値を出します。厳密にいうと電気代は複数段階料金制のため、電気代を使用量で割っても単価は出せないのですが、飛びぬけて使用量が少なかったり多かったりした月はないので、細かいことは気にしなくて良いです。
予想はしていましたがkWh単価が1.5倍(2021/12: 28.00円/kWh, 2022/12: 40.96円/kWh)です。そりゃ高い訳だ……ヒエー勘弁してくれえ。
電気関係の話題でもう一つ。福島第一原子力発電所の事故は日本国民に原発アレルギーを引き起こしたようで、原子力発電所を動かすor動かさないであらゆる地域がもめています。ちなみに今の稼働率はどの程度でしょうか?
データは原子力規制委員会が公開していて(原子力発電所の現在の運転状況 - 原子力規制委員会)簡単に見ることができます。各発電所の出力も公開されていますが、ちょっとサボってWikipediaから数値を持ってきました。間違っていたらごめんなさい。
各電力会社ごとに運転状況をグラフにしました。灰色が廃炉(または廃炉検討中)、オレンジが停止中、青が運転中です。
見てのとおり関西、四国、九州以外は全く運転していません。定格出力をグラフにすると、保有量が多いのは東京(柏崎刈羽)、関西(美浜、大飯、高浜)ですが、ほとんど活かされていないことがわかります。
東京電力なんかは柏崎刈羽原発だけで821万kWも出力があって、東電管内の太陽光発電の「ピーク値」である1200万kWの7割を充足する発電量です。強いですね。
原子力発電所を新たに建てるか建てないは人によって思うところがあるでしょうけど、既に建ててあるのに使わず風化させるのは勿体ないなあと思います……。
< | 2023 | > | ||||
<< | < | 02 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | 1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | - | - | - | - |
合計:
本日: