Skip to content

Instantly share code, notes, and snippets.

@lucmann
lucmann / abbr.csv
Last active July 17, 2024 03:34
abbreviation
AFAICT As far as I can tell 个人认为
AFAIK As far as I know 据我了解
AFAIU As far as I understand 按我理解
BTW By the way 顺便
FWIW For what it's worth 陈述见解或建议的谦逊说法,比如我觉得这是有用的信息,但是从听者的角度未必也是
FYI For your information 供您参考
HTH Hope this helps 希望奏效
IDK I don't know 我不知道
IIRC If I recall correctly / If I remember correctly 如果我没有记错
IMHO In my humble opinion 在下愚见
@lucmann
lucmann / riscv-as.md
Last active July 17, 2024 04:29
riscv assembly
  • beqz s0, 1f Expands to beq s0, x0, 1f jump to label 1f if s0 == x0. Note that label 1f means to go to numeric label 1 FORWARD of the given position whose opposite is label 1b meaning to go to numeric label 1 BACKWARD of the given position.
  • csrrw t3, CSR_SSCRATCH, a0 Write the value in the csr register CSR_SSCRATCH to t3 register and write the value in a0 back to CSR_SSCRATCH
  • jal purgatory Expands to jal x1, purgatory and unconditionally jump to function purgatory() and write PC+4 into x1 (return address) register
  • jal t0, .Lbyte_copy_until_aligned_forward Write PC+4 into register t0 and unconditionally jump to label .Lbyte_copy_until_aligned_forward.
  • jalr s0 Expands to jalr x1, s0, 0 meaning the target address to jump to is s0 + 0 and write PC+4 into x1 (return address) register
@lucmann
lucmann / arm-as.md
Last active July 12, 2024 10:48
arm assembly
  • ldp x0, x1, [sp, #0x10] load values from sp+0x10 into x0, x1 respectively

  • svc #0x0 trigger SuperVisor Call exception, used to implement syscall, 0x0 is an argument passed into the exception handler (sw intr handler in linux)

$ ulimit -a
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-m: resident set size (kbytes) unlimited
-u: processes 31178
-n: file descriptors 1024
-l: locked-in-memory size (kbytes) 65536
@lucmann
lucmann / cpuhp.sh
Created July 11, 2024 09:52
CPU core hot plug
#!/usr/bin/env bash
set -x
for c in `ls /sys/bus/cpu/devices/cpu[^0]*/online`; do
echo $1 > $c # 2> /dev/null # delete the first comment sign # in this line if you care about what's wrong.
done
$ git remote -v
amd git@gitlab.freedesktop.org:agd5f/linux.git (fetch)
amd git@gitlab.freedesktop.org:agd5f/linux.git (push)
drm git://anongit.freedesktop.org/drm/drm (fetch)
drm git://anongit.freedesktop.org/drm/drm (push)
drm-misc git://anongit.freedesktop.org/drm/drm-misc (fetch)
drm-misc git://anongit.freedesktop.org/drm/drm-misc (push)
mlankhorst git://people.freedesktop.org/~mlankhorst/linux (fetch)
mlankhorst git://people.freedesktop.org/~mlankhorst/linux (push)
riscv git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux.git (fetch)
@lucmann
lucmann / .muttrc
Last active May 28, 2024 01:16
mutt config
set from="luc@sietium.com"
set realname="Luc Ma"
# ==================== IMAP =============================
set imap_user = "onion0709@gmail.com"
# git-send-email
# set imap_pass = "xxxx xxxx xxxx xxxx"
@lucmann
lucmann / lkcn.sh
Created May 13, 2024 07:28
linux kernel codename
git log -L"/^VERSION = /,/^NAME = /:Makefile" --pretty="%h" --no-patch |
while read revision; do git show "$revision":Makefile |
sed -n -e '/^VERSION = [0-9]/ { N; N; N; N; s/\n/ /g; p }' |
sed -e 's/VERSION = //' -e 's/ PATCHLEVEL = /./' -e 's/ SUBLEVEL = /./' -e 's/ EXTRAVERSION = *//' -e 's/NAME/ NAME/'; done
echo "#include <stdio.h>\nint main() { int a = sizeof(struct {}); printf(\"a = %d\\\n\", a); }" | gcc -x c -
# a = 0
echo "#include <stdio.h>\nint main() { int a = sizeof(struct {}); printf(\"a = %d\\\n\", a); }" | gcc -x c++ -
# <stdin>:2:36: error: types may not be defined in ‘sizeof’ expressions
@lucmann
lucmann / rename_in_bulk.sh
Created December 28, 2021 04:44
rename files in bulk
find -name 'ARB-*.md' -printf '%P\n' | awk '{orig=$0; gsub(/-/, "_"); print "mv", orig, $0}' | bash
# notes
#
# -printf '%P\n' to strip preceding './' from find's output
# orig=$0 to save original file name
# gsub(/-/, "_") to subsititue '-' in the original file name to '_' in the target file name, it happens to '$0' in place
# print "mv", orig, $0 to generate shell command