как узнать сколько раз процесс мигрировал с одного процессорного ядра на другое?
perf stat
:$ perf stat true
Performance counter stats for 'true':
0.801845 task-clock (msec) # 0.445 CPUs utilized
0 context-switches # 0.000 K/sec
------> 0 cpu-migrations # 0.000 K/sec
42 page-faults # 0.052 M/sec
634,587 cycles # 0.791 GHz
459,763 instructions # 0.72 insn per cycle
89,841 branches # 112.043 M/sec
3,812 branch-misses # 4.24% of all branches
0.001801905 seconds time elapsed
Как используя адрес переменной полученный из первый программы изменить значение самой переменной?
DWORD ProcessId = ...;
LPVOID Address = ...;
int value = 500;
processHandle = OpenProcess(PROCESS_VM_WRITE, FALSE, ProccessId);
if (WriteProcessMemory(processHandle, Address, &newValue, sizeof(newValue), NULL))
printf("Success\n");
else
printf("Error\n");
volatile int value = 100;
, чтобы она гарантированно извлекала значение переменной из памяти на каждой итерации цикла. После сборки чужой библиотеки из исходного кода, появился файл с расширением .lib
Что делать с ним - непонятно,
хочется чтобы лента плавно изменяла яркость
void set_pwm_smooth(int new_pwm)
{
static const int pwm_step = ...; // шаг изменения ШИМ
static const int pwm_step_time = ...; // время одного шага изменения ШИМ
static int old_pwm;
int pwm = old_pwm;
while (pwm != new_pwm) {
int next_pwm = pwm + (pwm < new_pwm ? pwm_step : -pwm_step);
if ((pwm < new_pwm && next_pwm > new_pwm) ||
(pwm > new_pwm && next_pwm < new_pwm))
pwm = new_pwm;
else
pwm = next_pwm;
analogWrite(LEDPIN, pwm);
delay(pwm_step_time);
}
old_pwm = new_pwm;
}
windres lib/glut/glut.rc lib/glut/resources.o : Invalid argumentresources.o
в чем может быть дело
windres lib\glut\glut.rc lib\glut\resources.o
Подскажите пожалуйста, почему так
a b c
символы, которые нужны библиотеке b
будут искаться только в библиотеке c
, но не в a
. Если между библиотеками нет циклических зависимостей (т.е. нет такого, что a
определяет символ, нужный b
, а b
определяет символ, нужный a
), то их можно упорядочить так, что линковка будет успешной (см. топологическая сортировка). Если циклические зависимости есть, или сортировать лень, можно перечислить нужные библиотеки несколько раз или взять их в группу:g++ main.cpp -Wl,--start-group -lglfw3 -lgdi32 -lopengl32 -lglew32s -Wl,--end-group
sum_of = sum(matrix[][]);
sum_of = sum(n, matrix);
int sum (int n, int matrix[n][n]) { int sum = 0; for (int j = 0; j < n; ++j){ for (int i = 0; i < n; ++i){ if (j == i){ sum += matrix[j][i]; } } } return sum; }
int sum (int n, int matrix[n][n])
{
int sum = 0;
for (int i = 0; i < n; ++i) {
sum += matrix[i][i];
}
return sum;
}
пишу ключ -static
'-static'
On systems that support dynamic linking, this prevents linking with
the shared libraries. On other systems, this option has no effect.
линковать с ключем -dynamic.
Если выполнить так, то работает, но вручную прописывать не подходит:
#!/bin/bash
z1=({0..3}); z2=({4..7}) #...
for((i = 1; i < 3; ++i)); do
declare -n a=z$i
FILES=()
for n in ${a[@]}; do
FILES[${#FILES[@]}]="/untitled/a/$i/$n.jpg"
done
montage -monitor "${FILES[@]}" -geometry +0+0 -tile 4x1 /untitled/b/$i.jpg
done
замена внутри файла
#! /bin/bash
subst()
{
eval "cat <<EOF
`cat \"$1\"`
EOF"
}
. ./config
subst ./dhcpd.conf.in > ./dhcpd.conf
ddns-update-style interim;
ignore client-updates;
subnet ${NET}.0 netmask 255.255.255.0 {
option routers ${NET}.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.248.21;
option root-path "${NET}.1:/tftpboot/tensilica/rootfs/${ROOTFS}${NFS_MOUNT_OPTIONS}";
range dynamic-bootp ${NET}.128 ${NET}.128;
default-lease-time 21600;
max-lease-time 43200;
}
NET=192.168.135
ROOTFS=cp0_latest
NFS_MOUNT_OPTIONS=${NFS_MOUNT_OPTIONS},noac
IF_CONFIG="$NET.1 up"
CONFIG=debug-kc705-cp0_latest
KERNEL_IMAGE=uImage
Стоит ли сокращать код? И как?
struct
{
bool btn_state;
bool btn_flag;
bool hold_flag;
bool counter_flag;
bool isHolded_f;
bool isRelease_f;
bool isPress_f;
bool step_flag;
bool oneClick_f;
bool isOne_f;
} fl;
fl flags;
// ........
boolean GButton::isFlag(bool& flag) {
if (_tickMode) GButton::tick();
if (flag) {
flag = false;
return true;
} else return false;
}
boolean GButton::isPress() {
return isFlag(flags.isPress_f);
}
boolean GButton::isRelease() {
return isFlag(flags.isRelease_f);
}
boolean GButton::isClick() {
return isFlag(flags.isOne_f);
}
boolean GButton::isHolded() {
return isFlag(flags.isHolded_f);
}