[[BeagleBone]] *mmap [#rd2dff65] -[[参考>http://www.atmarkit.co.jp/ait/articles/1201/18/news133.html]] -機能:ファイルとメモリの同一視(仮想メモリ技術) --読み込み専用なら,メモリから読み出しがそのままファイル読み出しに相当. --書き込み専用なら,メモリへの書き込みがそのままファイル書き込みに相当. -メリット --カーネルとコピープログラムの間でデータのコピーが発生しないので,高速. *void*のoffset [#k44c5f76] #include <stdio.h> int main(void) { void* a = (char*)0x01; a = (void*)((char*)a + 0x0F); printf("%p\n", a); } *inputデバイスに入出力 [#g4c1f436] -Input Subsystem --キーボード・マウス・ジョイスティックなどからの入力を受け取る --キーボード・マウス・ジョイスティックが動いたと,システムに錯覚させる --仮想キーボード・マウス・ジョイスティックを作る **入力 [#i64137bb] -キーボードを開いて,読み出す. #include <stdio.h> #include <stdlib.h> #include <linux/input.h> #include <unistd.h> #include <sys/stat.h> #include <sys/types.h> #include <fcntl.h> #include <errno.h> int main(void) { // int fd = open("/dev/input/event0", O_RDONLY); // blocking int fd = open("/dev/input/event0", O_NONBLOCK); // non-blocking while (1) { // Read struct input_event event; int a = read(fd, &event, sizeof(event)); if (a < 0 && errno == EAGAIN) { // No Input } else if (a < 0) { fprintf(stderr, "read error\n"); return 1; } else { // Refer if (event.type == EV_KEY) // EV_KEY: Keyboard, EV_REL: Mouse movement, EV_ABS: joystick/touch panel if (event.value == 1) // 1: pushed, 0: released, 2: machinegun printf("%d pushed\n", event.code); // code: info to detect! } } } *日付からUNIX TIMEを得る [#a2e06324] #include <ctime> #include <cstdio> #include <cmath> int main(void) { int y = 2015; int m = 5; struct tm t; time_t timer; timer = mktime(&t); for (int d = 3; d < 30; d++) { t.tm_year = y - 1900; t.tm_mon = m - 1; t.tm_mday = d; t.tm_hour = t.tm_min = t.tm_sec = 0; timer = mktime(&t); printf("%d %d (%ld)\n", d, (int)round((double)timer/60/60/24), timer); } } |