at0mCe11

@at0mCe11

Joined on Jul 17, 2021

  • Introduction Similar to AWS EC2 login method, clients use SSH login with .pem file. Steps (Client) Create SSH key pair ## (Option 1) Use RSA 4096 bits $ ssh-keygen -P "" -t rsa -b 4096 -m PEM -f <KeyName> ## (Option 2) Use Ed25519 $ ssh-keygen -P "" -t ed25519 -m PEM -f <KeyName>
     Like  Bookmark
  • USB Decriptor Architecture USB Decriptors Device Desc. bcdUSB: 2.0 (0x0200) idVendor: Logitech, Inc. (0x046d) idProduct: G102/G203 LIGHTSYNC Gaming Mouse (0xc092) bMaxPacketSize: 64 (high speed) :::spoiler USB Speed
     Like  Bookmark
  • 型號 項目 內容 產品名稱 TravelMate P236-M 製造商 Acer
     Like  Bookmark
  • contributed by <NOVBobLee> GitHub 2023 年暑期 Linux 核心課程第 1 次測驗題 2023 年暑期 Linux 核心課程第 2 次測驗題 延伸問題 1−1 futex 整理 futex (Fast User-space muTEX) 為 Linux 系統呼叫之一,代號 SYS_futex ,是 Linux 提供給開發者實作 locking 與 semaphore 等機制的組件,目的在減少不必要的 user-kernel space 轉換。在沒有競爭的情況下, futex 的操作可以只在 user space 中完成,相反地,在有競爭的情況下,才會進入 kernel space ,執行將等待者排進等待佇列,進入睡眠狀態等。 當一群執行緒持有一共享記憶體 (限定 32-bit 長度, 64 位元架構也不例外,因此也被稱為 futex word ) ,各執行緒根據各自使用的 futex 操作和 futex 的值,可以自己進入睡眠狀態或是被其他執行緒喚醒。根據 futex 不同的操作,有各自相異的帶入參數。
     Like  Bookmark
  • contributed by <NOVBobLee> GitHub 2023 年暑期 Linux 核心課程第 2 次測驗題 2023 年暑期 Linux 核心課程第 3 次作業 挑戰 1 請見之前筆記。 挑戰 2−1 挑戰 2−2 挑戰 2−3
     Like  Bookmark
  • GitHub 2023 年暑期 Linux 核心課程第 1 次作業 測驗 $α−1$ 測驗 $α−2$ adjust balance parameter [-1, 1] -> [-2, 2], etc.Need to fix replace_right/replace_left hint start w/1, not 0 add struct st_node **pparent to deal w/judgement of left/right child
     Like  Bookmark
  • 參考資料 [PATCH] linux/const.h: Explain how __is_constexpr() works Linux Kernel's __is_constexpr macro N1256 介紹 在 C90 裡是沒有 Variable Length Array (VLA) 的,所以要配置一個陣列必須使用 constant expression 表示陣列大小,若當擴充使用,也還是有危險的。為了能在編譯時間裡檢查是否為 constant expression ,於是 Martin Uecker 想到一個方法,也就是我們要探討的巨集 __is_constexpr ,其原理使用了 GNU C extension 、 conditional operator 的行為、 null pointer constant 的定義,了解後真的覺得這方法很漂亮。 Constant Expression 定義 那 constant expression 是什麼?根據 C99 是說,他是在編譯時期就可以被計算出值的一個表示。
     Like  Bookmark
  • contributed by < NOVBobLee > 作業要求 環境設置 Linux 核心版本(Ubuntu): $ uname -r 5.13.0-35-generic
     Like  Bookmark
  • 測驗一 使用 SWAR 技巧最佳化 memchr 。 void *memchr_opt(const void *src_void, int c, size_t length) { const unsigned char *src = (const unsigned char *) src_void; unsigned char d = c; /* adjust the start address to be aligned, * and search the target char at the same time
     Like  Bookmark
  • contributed by < NOVBobLee > 作業要求 測驗 1 可產生 LP64 中 unsigned long 寬度且對應輸入參數控制 bits 位置的 bitmask 巨集。 #define GENMASK(h, l) \ (((~0UL) >> (LEFT)) & ((~0UL) >> (l) << (RIGHT)))
     Like  Bookmark
  • contributed by < NOVBobLee > 作業要求 :::danger 注意書寫規範:中英文間用一個半形空白區隔 :notes: jserv ::: 已修改
     Like  Bookmark
  • contributed by < NOVBobLee > 作業要求 測驗 1 對兩個無號 32 位元整數取平均值。 /* method 1 */ #include <stdint.h> uint32_t average(uint32_t a, uint32_t b)
     Like  Bookmark
  • contributed by < NOVBobLee > 測驗題目 測驗 1 LeetCode - Two Sum Two sum 若以暴力法,則時間複雜度為 $O(n^2)$ 。若改以使用湊雜表,可降低時間複雜度到 $O(n)$ 以下。以下為使用 Linux 湊雜表結構的湊雜表實作,拆開解釋,最後利用他來完成 Two sum 。 湊雜表結構宣告 Linux 的湊雜表使用兩種結構,一為 hlist_head ,為湊雜表 bucket 的開頭,是單向鍊結結構,二為 hlist_node ,為 bucket 裡的元素連結,是雙向鍊結結構。為何不使用通用的 list_head ,其原因在湊雜表為減少碰撞發生,會把 bucket 的數量增大,且不少 bucket 是空的,若使用雙向鍊結結構,一個開頭就需要兩個指標的空間。第二是如果碰撞變少,那麼 bucket 裡的元素數量也不多,不需要像環狀雙向鍊結結構可以從尾部或從頭部兩種方向走訪。
     Like  Bookmark