SYSCALL_DEFINE3(calc, int, a, int, b, char, op) { long result = 0; int i;
switch (op) { case'+': result = a + b; break; case'-': result = a - b; break; case'*': result = a * b; break; case'/': if (b == 0) return -EINVAL; result = a / b; break; case'%': if (b == 0) return -EINVAL; result = a % b; break; case'^': result = a ^ b; break; case'p': /* 表示 ** */ result = 1; for (i = 0; i < b; i++) result *= a; break; default: return -EINVAL; }