• 追加された行はこの色です。
  • 削除された行はこの色です。
[[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);
     }
 }


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS