LINUX.ORG.RU

Избранные сообщения denisnet

Debian Testing не уходит в suspend на Asus ZenMate

Форум — General

Добрый день, поставил на ZenMate debian testing + kde5. Не хочет уходить в suspend порой, и не могу понять почему. Выглядит все следующим образом.

1. # systemctl suspend или из KDE UI. 2. Экран гаснет, хост перестает пинговаться, но ноутбук так и не выключается - горит индикатор, винт при этом не работает (определяю по индикатору). Помогает только RESET - подержать кнопку выключения несколько секунд. Юзал до этого арчик, там проблем с suspend на данном устройстве не было.

Mar 26 15:52:39 denis-book kernel: [ 3219.326997] vboxdrv: ffffffffa0e8b020 VMMR0.r0
Mar 26 15:52:39 denis-book kernel: [ 3219.396671] vboxdrv: ffffffffa079e020 VBoxDDR0.r0
Mar 26 15:52:39 denis-book kernel: [ 3219.397902] vboxdrv: ffffffffa0008020 VBoxDD2R0.r0
Mar 26 15:52:39 denis-book kernel: [ 3219.441722] vboxdrv: ffffffffa005c020 VBoxEhciR0.r0
Mar 26 17:19:59 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.battery: Deleting stale BattteryDbusInterface for "CUBOT"
Mar 26 17:19:59 denis-book org.kde.kdeconnect[3737]: kdeconnect.core: Loaded plugin: "kdeconnect_battery"
Mar 26 17:19:59 denis-book org.kde.kdeconnect[3737]: kdeconnect.core: Loaded plugin: "kdeconnect_mousepad"
Mar 26 17:19:59 denis-book org.kde.kdeconnect[3737]: kdeconnect.core: Loaded plugin: "kdeconnect_ping"
Mar 26 17:19:59 denis-book org.kde.kdeconnect[3737]: kdeconnect.core: Loaded plugin: "kdeconnect_mpriscontrol"
Mar 26 17:19:59 denis-book org.kde.kdeconnect[3737]: kdeconnect.core: Loaded plugin: "kdeconnect_clipboard"
Mar 26 17:19:59 denis-book org.kde.kdeconnect[3737]: kdeconnect.core: Loaded plugin: "kdeconnect_share"
Mar 26 17:19:59 denis-book org.kde.kdeconnect[3737]: kdeconnect.core: Loaded plugin: "kdeconnect_telephony"
Mar 26 17:19:59 denis-book org.kde.kdeconnect[3737]: kdeconnect.core: Loaded plugin: "kdeconnect_pausemusic"
Mar 26 17:19:59 denis-book org.kde.kdeconnect[3737]: kdeconnect.core: Loaded plugin: "kdeconnect_notifications"
Mar 26 17:19:59 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.sftp: add to dolphin
Mar 26 17:19:59 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.sftp: Created device: "CUBOT"
Mar 26 17:19:59 denis-book org.kde.kdeconnect[3737]: kdeconnect.core: Loaded plugin: "kdeconnect_sftp"
Mar 26 17:19:59 denis-book org.kde.kdeconnect[3737]: kdeconnect.core: Device "CUBOT" status changed. Reachable: true . Paired:  true
Mar 26 17:19:59 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.battery: Destroying BatteryDbusInterface
Mar 26 17:19:59 denis-book org.kde.kdeconnect[3737]: kdeconnect.core: Fallback (1), try reverse connection (send udp packet)
Mar 26 17:23:42 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "org.telegram.messenger::1"
Mar 26 17:23:55 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "com.fsck.k9::-5000"
Mar 26 17:23:55 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: Not found
Mar 26 17:23:55 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "com.fsck.k9::-5000"
Mar 26 17:23:55 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: Not found
Mar 26 17:24:24 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "org.telegram.messenger::1"
Mar 26 17:24:33 denis-book kernel: [ 8732.750134] vboxdrv: ffffffffa0e8b020 VMMR0.r0
Mar 26 17:24:33 denis-book kernel: [ 8732.967485] vboxdrv: ffffffffa079e020 VBoxDDR0.r0
Mar 26 17:24:33 denis-book kernel: [ 8732.968481] vboxdrv: ffffffffa0008020 VBoxDD2R0.r0
Mar 26 17:24:33 denis-book kernel: [ 8733.061273] vboxdrv: ffffffffa005c020 VBoxEhciR0.r0
Mar 26 17:24:51 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "org.telegram.messenger::1"
Mar 26 17:25:09 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "org.telegram.messenger::1"
Mar 26 17:25:21 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "org.telegram.messenger::1"
Mar 26 17:25:22 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "org.telegram.messenger::1"
Mar 26 17:25:58 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "org.telegram.messenger::1"
Mar 26 17:35:28 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "org.telegram.messenger::1"
Mar 26 17:38:56 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "com.fsck.k9::-5000"
Mar 26 17:38:56 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: Not found
Mar 26 17:38:56 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "com.fsck.k9::-5000"
Mar 26 17:38:56 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: Not found
Mar 26 17:47:21 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "org.telegram.messenger::1"
Mar 26 17:47:55 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "org.telegram.messenger::1"
Mar 26 17:49:11 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "org.telegram.messenger::1"
Mar 26 17:50:54 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "android::17040508"
Mar 26 17:50:54 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: Not found
Mar 26 17:51:04 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "android::17040508"
Mar 26 17:51:04 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: Not found
Mar 26 17:52:17 denis-book kernel: [10397.185280] vboxdrv: ffffffffa0e8b020 VMMR0.r0
Mar 26 17:52:17 denis-book kernel: [10397.404229] vboxdrv: ffffffffa079e020 VBoxDDR0.r0
Mar 26 17:52:17 denis-book kernel: [10397.418650] vboxdrv: ffffffffa0008020 VBoxDD2R0.r0
Mar 26 17:52:17 denis-book kernel: [10397.508434] vboxdrv: ffffffffa005c020 VBoxEhciR0.r0
Mar 26 17:53:00 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "org.telegram.messenger::1"
Mar 26 17:53:58 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "com.fsck.k9::-5000"
Mar 26 17:53:58 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: Not found
Mar 26 17:53:58 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: removeNotification "com.fsck.k9::-5000"
Mar 26 17:53:58 denis-book org.kde.kdeconnect[3737]: kdeconnect.plugin.notification: Not found
Mar 26 17:54:14 denis-book kernel: [10513.774926] usb 1-2: new full-speed USB device number 5 using xhci_hcd
Mar 26 17:54:14 denis-book kernel: [10513.906531] usb 1-2: New USB device found, idVendor=103a, idProduct=f008
Mar 26 17:54:14 denis-book kernel: [10513.906535] usb 1-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
Mar 26 17:54:14 denis-book mtp-probe: checking bus 1, device 5: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2"
Mar 26 17:54:14 denis-book mtp-probe: bus: 1, device: 5 was not an MTP device
Mar 26 17:57:00 denis-book NetworkManager[3167]: <info>  [1459004220.799186] sleep requested (sleeping: no  enabled: yes)
Mar 26 17:57:00 denis-book NetworkManager[3167]: <info>  [1459004220.931064] sleeping...
Mar 26 17:57:00 denis-book NetworkManager[3167]: <info>  [1459004220.952689] (wlp2s0): device state change: activated -> unmanaged (reason 'sleeping') [100 10 37]
Mar 26 17:57:00 denis-book NetworkManager[3167]: <info>  [1459004220.988101] (wlp2s0): canceled DHCP transaction, DHCP client pid 6198
Mar 26 17:57:00 denis-book NetworkManager[3167]: <info>  [1459004220.988140] (wlp2s0): DHCPv4 state changed bound -> done
Mar 26 17:57:01 denis-book kernel: [10680.630324] wlp2s0: deauthenticating from f8:d1:11:46:b1:80 by local choice (Reason: 3=DEAUTH_LEAVING)
Mar 26 17:57:01 denis-book NetworkManager[3167]: <info>  [1459004221.084364] NetworkManager state is now ASLEEP
Mar 26 17:57:01 denis-book kernel: [10680.885010] cfg80211: World regulatory domain updated:
Mar 26 17:57:01 denis-book kernel: [10680.885013] cfg80211:  DFS Master region: unset
Mar 26 17:57:01 denis-book kernel: [10680.885014] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time)
Mar 26 17:57:01 denis-book kernel: [10680.885016] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
Mar 26 17:57:01 denis-book kernel: [10680.885017] cfg80211:   (2457000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
Mar 26 17:57:01 denis-book kernel: [10680.885018] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm), (N/A)
Mar 26 17:57:01 denis-book kernel: [10680.885019] cfg80211:   (5170000 KHz - 5250000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (N/A)
Mar 26 17:57:01 denis-book kernel: [10680.885020] cfg80211:   (5250000 KHz - 5330000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (0 s)
Mar 26 17:57:01 denis-book kernel: [10680.885021] cfg80211:   (5490000 KHz - 5730000 KHz @ 160000 KHz), (N/A, 2000 mBm), (0 s)
Mar 26 17:57:01 denis-book kernel: [10680.885022] cfg80211:   (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
Mar 26 17:57:01 denis-book kernel: [10680.885023] cfg80211:   (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm), (N/A)
Mar 26 17:57:01 denis-book org.kde.kdeconnect[3737]: kdeconnect.core: Broadcasting identity packet
Mar 26 18:00:06 denis-book rsyslogd: [origin software="rsyslogd" swVersion="8.16.0" x-pid="908" x-info="http://www.rsyslog.com"] start


From /var/log/syslog:
Mar 26 17:57:01 denis-book kernel: [10680.630324] wlp2s0: deauthenticating from f8:d1:11:46:b1:80 by local choice (Reason: 3=DEAUTH_LEAVING)
Mar 26 17:57:01 denis-book wpa_supplicant[3321]: wlp2s0: CTRL-EVENT-DISCONNECTED bssid=f8:d1:11:46:b1:80 reason=3 locally_generated=1
Mar 26 17:57:01 denis-book NetworkManager[3167]: <info>  [1459004221.084364] NetworkManager state is now ASLEEP
Mar 26 17:57:01 denis-book kernel: [10680.885010] cfg80211: World regulatory domain updated:
Mar 26 17:57:01 denis-book kernel: [10680.885013] cfg80211:  DFS Master region: unset
Mar 26 17:57:01 denis-book kernel: [10680.885014] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time)
Mar 26 17:57:01 denis-book kernel: [10680.885016] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
Mar 26 17:57:01 denis-book kernel: [10680.885017] cfg80211:   (2457000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
Mar 26 17:57:01 denis-book kernel: [10680.885018] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm), (N/A)
Mar 26 17:57:01 denis-book kernel: [10680.885019] cfg80211:   (5170000 KHz - 5250000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (N/A)
Mar 26 17:57:01 denis-book kernel: [10680.885020] cfg80211:   (5250000 KHz - 5330000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (0 s)
Mar 26 17:57:01 denis-book kernel: [10680.885021] cfg80211:   (5490000 KHz - 5730000 KHz @ 160000 KHz), (N/A, 2000 mBm), (0 s)
Mar 26 17:57:01 denis-book kernel: [10680.885022] cfg80211:   (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
Mar 26 17:57:01 denis-book kernel: [10680.885023] cfg80211:   (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm), (N/A)
Mar 26 17:57:01 denis-book org.kde.kdeconnect[3737]: kdeconnect.core: Broadcasting identity packet
Mar 26 17:57:01 denis-book dbus[952]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service'
Mar 26 17:57:01 denis-book systemd[1]: Starting Network Manager Script Dispatcher Service...
Mar 26 17:57:01 denis-book dbus[952]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
Mar 26 17:57:01 denis-book systemd[1]: Started Network Manager Script Dispatcher Service.
Mar 26 17:57:01 denis-book nm-dispatcher: req:1 'down' [wlp2s0]: new request (1 scripts)
Mar 26 17:57:01 denis-book nm-dispatcher: req:1 'down' [wlp2s0]: start running ordered scripts...
Mar 26 17:57:02 denis-book systemd[1]: Starting Avahi mDNS/DNS-SD Stack...
Mar 26 17:57:02 denis-book avahi-daemon[9411]: Process 6010 died: No such process; trying to remove PID file. (/var/run/avahi-daemon//pid)
Mar 26 17:57:02 denis-book avahi-daemon[9411]: Found user 'avahi' (UID 107) and group 'avahi' (GID 112).
Mar 26 17:57:02 denis-book avahi-daemon[9411]: Successfully dropped root privileges.
Mar 26 17:57:02 denis-book avahi-daemon[9411]: avahi-daemon 0.6.32-rc starting up.
Mar 26 17:57:02 denis-book avahi-daemon[9411]: Successfully called chroot().
Mar 26 17:57:02 denis-book avahi-daemon[9411]: Successfully dropped remaining capabilities.
denis@denis-book:~$ cat /proc/version 
Linux version 4.4.0-1-amd64 (debian-kernel@lists.debian.org) (gcc version 5.3.1 20160307 (Debian 5.3.1-11) ) #1 SMP Debian 4.4.6-1 (2016-03-17)

denis@denis-book:~$ lspci
00:00.0 Host bridge: Intel Corporation Haswell-ULT DRAM Controller (rev 0b)
00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 0b)
00:03.0 Audio device: Intel Corporation Haswell-ULT HD Audio Controller (rev 0b)
00:04.0 Signal processing controller: Intel Corporation Device 0a03 (rev 0b)
00:14.0 USB controller: Intel Corporation 8 Series USB xHCI HC (rev 04)
00:16.0 Communication controller: Intel Corporation 8 Series HECI #0 (rev 04)
00:1b.0 Audio device: Intel Corporation 8 Series HD Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 1 (rev e4)
00:1c.3 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 4 (rev e4)
00:1c.4 PCI bridge: Intel Corporation 8 Series PCI Express Root Port 5 (rev e4)
00:1f.0 ISA bridge: Intel Corporation 8 Series LPC Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation 8 Series SATA Controller 1 [AHCI mode] (rev 04)
00:1f.3 SMBus: Intel Corporation 8 Series SMBus Controller (rev 04)
00:1f.6 Signal processing controller: Intel Corporation 8 Series Thermal (rev 04)
02:00.0 Network controller: Qualcomm Atheros AR9462 Wireless Network Adapter (rev 01)
03:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 840M] (rev a2)

Есть идеи у кого, в чем проблема? Хотел зарегиться на форуме дебиана и спросить там, только IPшники моего провайдера там в блэклисте :)

 , , ,

denisnet
()

GPG No pinentry

Форум — Security

Доброго времени суток. На арчике в последнее время перестал работать gpg ссылаясь на то, что не может найти pinentry.

strace gpg --decrypt message.asc
...
write(9, "\n", 1)                       = 1
read(9, "OK\n", 1002)                   = 3
write(9, "OPTION ttytype=xterm", 20)    = 20
write(9, "\n", 1)                       = 1
read(9, "OK\n", 1002)                   = 3
write(9, "OPTION display=:0", 17)       = 17
write(9, "\n", 1)                       = 1
read(9, "OK\n", 1002)                   = 3
write(9, "OPTION lc-ctype=en_US.UTF8", 26) = 26
write(9, "\n", 1)                       = 1
read(9, "OK\n", 1002)                   = 3
write(9, "OPTION lc-messages=en_US.UTF8", 29) = 29
write(9, "\n", 1)                       = 1
read(9, "OK\n", 1002)                   = 3
write(9, "OPTION allow-pinentry-notify", 28) = 28
write(9, "\n", 1)                       = 1
read(9, "OK\n", 1002)                   = 3
write(9, "AGENT_ID", 8)                 = 8
write(9, "\n", 1)                       = 1
read(9, "ERR 67109139 Unknown IPC command <GPG Agent>", 1002) = 44
read(9, "\n", 958)                      = 1
write(9, "GETINFO cmd_has_option GET_PASSPHRASE repeat", 44) = 44
write(9, "\n", 1)                       = 1
read(9, "OK\n", 1002)                   = 3
write(9, "GET_PASSPHRASE --data --repeat=0 -- ************************** X X Please+enter+the+passphrase+to+unlock+the+secret+key+for+the+OpenPGP+certificate:%0A%22****************%22%0A1024-bit+RSA+key,+ID+F18BBF3C,%0Acreated+2014-02-20+(main+key+ID+DEFEC5EE).%0A", 266) = 266
write(9, "\n", 1)                       = 1
read(9, "ERR 67108949 No pinentry <GPG Agent>\n", 1002) = 37
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fada39a6000
write(2, "gpg: problem with the agent: No pinentry\n", 41gpg: problem with the agent: No pinentry
) = 41
write(2, "gpg: encrypted with 1024-bit RSA key, ID ********, created 2014-02-20\n", 70gpg: encrypted with 1024-bit RSA key, ID ********, created 2014-02-20
) = 70
write(2, "      \"*****\"\n", 23      "**************************"
) = 23
write(2, "gpg: public key decryption failed: Operation cancelled\n", 55gpg: public key decryption failed: Operation cancelled
) = 55
write(2, "gpg: decryption failed: No secret key\n", 38gpg: decryption failed: No secret key
) = 38
read(3, "", 8192)                       = 0
munmap(0x7fada39a9000, 32768)           = 0
exit_group(2)                           = ?
+++ exited with 2 +++
[denis@dl tmp]$ echo $GPG_AGENT_INFO
/home/denis/.gnupg/S.gpg-agent:28393:1
[denis@dl tmp]$ ps -e | grep gpg
 8596 ?        00:00:00 gpg-agent
28684 ?        00:00:03 kgpg
cat ~/.gnupg/gpg-agent.conf 
pinentry-program /usr/bin/pinentry-qt4
[denis@dl tmp]$ file /usr/bin/pinentry-qt4 
/usr/bin/pinentry-qt4: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=86097a97dab37f778ff69d6639768e85fa073942, stripped

Звездочками заменил имя и fingerprint ключа.

denisnet
()

VLC record duration and input stream fail

Форум — General

Добрый день. На сервере (Сервер 1) крутится vlc который ретранслирует видеопоток из другого сервера (Сервер 2). Дело в том, что vlc сервис не падает, когда на $(Сервер 2) прекращается трансляции исходного потока (Отключили электропитание и др. проблемы). Так вот, подскажмите пожалуйста, как сделать так, чтобы VLC сервис на $(Сервер 1) килялся, при отсутствии потока на $(Сервер 2).

Запуск:

su $USER -c "vlc --daemon $HOST:$port --pidfile=$VDIR/vlc_retr_$port.pid  --sout '#std{access=http,mux=ts,dst=:$port}'"

Возможно есть какая-то опциия, но я не смог найти ее среди кучи других.

И еще, может есть опция, позволяющия контролировать время записи потока?

 video server,

denisnet
()

FUSE Development

Форум — Development

Приветствую. Разбираюсь с ФС. Спроектировал свою FAT подобную систему, использую FUSE.

Библиотека основных функций ФС уже написана. Но... Не получается до конца прикрутить FUSE. И я даже как-то в недоумении, как отлаживать, это и не Kernel object, где можно использовать kprintf, и обычное логирование у меня почему-то не вышло, хотя по идее должно работать. Возможно, потому что ошибка сегметации возникает раньше того, как я вывожу сообщение в лог.

Код fuse модуля:

#define _USE_GNU
#define _POSIX_C_SOURCE 199309
#define FUSE_USE_VERSION  26
#define USERDATA ((struct user_data*)(fuse_get_context()->private_data))
#define LOGFILE USERDATA->logfile

#include <fuse.h>
#include <dirent.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <stdio.h>
#include <sys/stat.h>
#include <stdarg.h>
#include "libdfat.h"

/******************************************************/
struct user_data {
  FILE *logfile;
};

FILE* log_open()
{
  FILE *logfile = fopen("fusedfat.log", "w");
  setvbuf(logfile, NULL, _IOLBF, 0);;
  return logfile;
}

void log_msg(const char *format, ...)
{
    va_list ap;
    va_start(ap, format);
    vfprintf( LOGFILE, format, ap);
    fflush(LOGFILE);
}


/******************************************************/

int dfuse_usage()
{
    printf("dfuse_fuse <device> <mountpoint>\n\n");
    return 0;
}

void *dfuse_init(struct fuse_conn_info *conn)
{   
    return NULL;
}

void dfuse_destroy(void *userdata)
{
    fflush(LOGFILE);
    fclose(LOGFILE);
    dfat_close();
}

static int dfuse_getattr(const char *path, struct stat *stbuf)
{
  int res = 0; /* temporary result */
  memset(stbuf, 0, sizeof(struct stat));
  dir_record_t r;
  
  if( !dfat_find_dir_record(path, &r) )
    return -ENOENT;

  if(r.flags & 0x80 == 1) {
    stbuf->st_mode = 0x4000 | 0777;
    stbuf->st_size = 0;
  }
  else {
    stbuf->st_mode = 0777;
    stbuf->st_size = r.size;
  }

}

static int dfuse_error(char *str)
{
    int ret = -errno;
    
    log_msg("    ERROR %s: %s\n", str, strerror(errno));
    
    return ret;
}

int dfuse_mkdir(const char *path, mode_t mode)
{
    int retstat = 0;
    
    log_msg("\ndfuse_mkdir(path=\"%s\", mode=0%3o)\n", path, mode);

    retstat = dfat_create(path, 0x80, NULL);

    if (retstat < 0)
      retstat = dfuse_error("dfuse_mkdir mkdir");
    
    return retstat;
}

int dfuse_unlink(const char *path)
{
    int retstat = 0;
    
    log_msg("dfuse_unlink(path=\"%s\")\n", path);
    
    retstat = dfat_unlink(path);

    if (retstat < 0)
    
    retstat = dfuse_error("unlink");
    
    return retstat;
}

int dfuse_rmdir(const char *path)
{
    int retstat = 0;
    log_msg("dfuse_rmdir(path=\"%s\")\n", path);
    retstat = dfat_unlink(path);
    if (retstat < 0)   
      retstat = dfuse_error("rmdir");
    
    return retstat;
}

int dfuse_rename(const char *path, const char *newpath)
{
    return dfat_rename(path, newpath);
}

int dfuse_open(const char *path, struct fuse_file_info *fi)
{
  if(!dfat_exist(path)) 
  {
    return -ENOENT;
  }
  
  return 0;
}

int dfuse_read(const char *path, char *buf, size_t size, off_t offset, struct fuse_file_info *fi)
{
    int readed = 0;
    return readed;
}

int dfuse_write(const char *path, const char *buf, size_t size, off_t offset,
       struct fuse_file_info *fi)
{
  int writed = 0;
  return writed = 0;
}


int dfuse_readdir(const char *path, void *buf, fuse_fill_dir_t filler, off_t offset,
               struct fuse_file_info *fi)
{
    log_msg("dfuse_readdir()\n");
    int retstat = 0;
    struct list l;
    list_clear(&l);
    dfat_read_folder_by_path(path, &l);

    filler(buf, "." , NULL, 0);
    filler(buf, ".." , NULL, 0);
    for(unsigned int i=0; i<l.count; i++) {
        filler(buf, l.array[i].name , NULL, 0);
        log_msg("\t%s\n", l.array[i].name);
    }
    
    fflush(stderr);

    return retstat;
}

/******************************************************************/
/* The fuse struct for storing FS operations functions addresses */
struct fuse_operations dfuse_oper = {
  .getattr = dfuse_getattr,
  .mkdir = dfuse_mkdir,
  .unlink = dfuse_unlink,
  .readdir = dfuse_readdir,
  .rmdir = dfuse_rmdir,
  .rename = dfuse_rename,
  .open = dfuse_open,
  .read = dfuse_read,
  .write = dfuse_write,
  .destroy = dfuse_destroy,
};

int main(int argc, char *argv[])
{
    if ((argc < 3))
        return dfuse_usage();

    struct user_data *data = (struct user_data*) malloc(sizeof(struct user_data));
    data->logfile = log_open();

    dfat_load(argv[1]);

    argv[1] = argv[2];
    argv[2] = NULL;
    argc--;

    
    return fuse_main(argc, argv, &dfuse_oper, data);  
}

Все собирается. Монтируется без ошибок. Но:

dmesg | tail
[101513.954108] fusedfat[21784]: segfault at c000c20 ip 00007f9312f72137 sp 00007f9312a458f8 error 4 in libc-2.16.so[7f9312e55000+19d000]
[101514.754521] systemd-journald[127]: Failed to write entry, ignoring: Argument list too long

А при попытке прочитать содержимое дирректории:

% ls mountpoint/*
ls: cannot access mountpoint/*: Transport endpoint is not connected

Поддтолкните в нужное направление пожалуйста.

 , ,

denisnet
()

Дисплей мерцает на серых тонах в ноутбуке

Форум — Linux-hardware

Приветствую. Может мне кто подскажет, почему в моем лэптопе стал мерцать «полосами» дисплей? Как будто CRT монитор с малой частотой развертки. Притом, это мерцание видно на серых тонах. Мерцание становиться интенсивнее, если ноутбук начинает работать от батареи.

Кто может подсказать, в чем проблема? Дело не в видеокарте,я подключал к VGA разъему внешний монитор, и там не заметно такого эффекта.

 , ,

denisnet
()

NASM, GDB, LD

Форум — Development

Как-то решил я поробывать перейти с MASM на YASM. Наверное отому, что уже долго использую линукс.

Так вот, у меня возникли вопросы, на которые, я думаю, мне помогут найти ответы здесь.

yasm -f elf64 -g stabs pr.asm -o pr.o
gcc pr.o -o pr

Транслируется и линкуется нормально, но: 1. Возникает ошибка сегментации при вызывое функции puts 2. gdb не правильно отображает точки остановок в псевдоокошке свверху, где отображается код, если запустить gdb c параметром -tui

Вот код программы (она пока ничего не делает):


BITS 64
CPU Bulldozer


extern puts
global main

;;--------------------------------------------------------
;секция инициализированных переменных
SECTION .data           
    promt1: db "Starting", 0Ah, 0h     
    promt2: db "Result:", 0h
    promt3: db "Allocation error!", 0Ah, 0h
    str_funloaded: db "Loaded overlay function: ", 0h
    str_exit: db "Bye!", 0Ah, 0h
    str_calling: db "Calling overlay function...", 0Ah,  0h
    nline: db 0Ah, 0h
    o_sum: db "o_sum.bin", 0 ;путь к программе
    o_div: db "o_div.bin", 0 
    o_mul: db "o_mul.bin", 0
    o_sub: db "o_sub.bin", 0
    src_str: db "10 + 20", 0
;----------------------------------------------------------
;секция сегмент подгрузки оверлейных функций
SECTION .bss
 ostart:	resb 10
;----------------------------------------------------------
	;исполняемы код программы	 
SECTION .text
; **********************************************
;подсчет длины строки
; вход: rdx смещение строки в ds
; выход: rcx длина строки
astrlen:
    xor rcx, rcx
    push rbx
    
    mov rbx, rdx ;помещаем адрес строки в ebx
    
    strlen_start:    
    cmp byte [rbx], 0 ;сравниваем текущий символ строки с 0 символом
    je strlen_exit
    inc rbx		;увеличиваем счетчик
    inc rcx
    jmp strlen_start
    strlen_exit:
    pop rbx
    ret
; ************************************************ 
; печать строки
print:	
	push rax
	push rbx
	push rcx
	push rdx
	;подготовка к системному вызову write
	;ssize_t write(int fildes, const void *buf, size_t nbyte);
         mov rax, 4
	 ;помещаем в ebx stdout fd
	 mov rbx, 1
	 mov r8, rdx
	 call astrlen
	 mov rdx, rcx
	 ;в ecx помещаем адрес строки для печати	 
	 mov rcx, r8
	 ;вызов системного прерывания linux
	 int 80h
	 pop rdx
	 pop rcx
	 pop rbx
	 pop rax
	 ret
; ***************************************************
; загрузка оверлейной функции
run:
	mov r8, rbx
	;int open(const char *path, int oflag, ...  );
	mov rax, 5	;системмный вызов open 
	mov rcx, 0000000b
	int 80h
	;ssize_t read(int fildes, void *buf, size_t nbyte);
	mov rbx, rax
	mov rax, 3	;системный вызов read
	mov rcx, ostart
	mov rdx, 10	;размер буфера для записи оверлейной функции
	;закрыываем файл
	int 80h
	mov rax, 6
	int 80h
	;вывод сооxбщения об успешном завершении операции
	mov rdx, str_funloaded
	call print
	
	mov rdx, r8
	call print
	
	mov rdx, nline
	call print
	ret
; ***************************************************
main:
    mov rdx, promt1
    call print
    
    push  promt2
    call puts
    ; обработка параметров командной строки
    ;mob rbx, o_sum
    ;call run
    ;выход из программы 
    exit:
	mov rdx, str_exit
	call print
	mov rax, 1
	mov rbx, 0
	int 80h
    error:
	;print promt3

Ошибка сегментации, когда функция put вызывает функцию strrlen: Вот backtrace:

                            Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7abc3a1 in __strlen_sse2 () from /lib/libc.so.6
(gdb) bt
#0  0x00007ffff7abc3a1 in __strlen_sse2 () from /lib/libc.so.6
#1  0x00007ffff7aa56ec in puts () from /lib/libc.so.6
#2  0x000000000040058a in main () at lab4_x64.asm:112

Еще такой вопрос к знатокам дела: В 64 битных процессорах отказались от сегментных регистров? Или как? Потому что, yasm при трансляции сообщил, что сегментные регистры игнорируются. Я понимаю, что в 32 битных их оставили для совместимости. Или я не так понял что-то?

denisnet
()