Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - keremet

Страницы: [1] 2 3 ... 31
1
Разработки Kirov OSUG / Re: Добавка к терминалу
« : Август 28, 2018, 04:47:26 pm »
#include <gtk/gtk.h>
#include <stdlib.h>
#include <string>
#include <vector>
#include <iostream>
using namespace std;

GtkWidget* vbox;
vector<string> getCommandParts(GtkWidget* hpaned1){
vector<string> vs;
GList* hpaned1List = gtk_container_get_children(GTK_CONTAINER( hpaned1 ));
for(int i=0;i<g_list_length(hpaned1List);i++){
GtkWidget* w1 = (GtkWidget* )g_list_nth_data(hpaned1List, i);
if(GTK_IS_ENTRY(w1)){
string s=gtk_entry_get_text(GTK_ENTRY(w1));
vs.push_back(s);
}else if(GTK_IS_HPANED(w1)){
GList* hpaned2List = gtk_container_get_children(GTK_CONTAINER( w1 ));
for(int i=0;i<g_list_length(hpaned2List);i++){
GtkWidget* w2 = (GtkWidget* )g_list_nth_data(hpaned2List, i);
if(GTK_IS_ENTRY(w2)){
string s=gtk_entry_get_text(GTK_ENTRY(w2));
vs.push_back(s);
}
}
}
}
return vs;
}

void buttonRunClicked(GtkWidget *widget, GtkWidget* hpaned1) {
vector<string> vs=getCommandParts( hpaned1 );
string s;
for(int i=0;i<vs.size();i++)
s+=vs[i];

   cout << s << endl;
   system(s.c_str());
}

void buttonDelClicked(GtkWidget *widget, GtkWidget* hbox) {
gtk_widget_destroy(hbox);
}

void buttonCopyClicked(GtkWidget *widget, GtkWidget* hpaned1);

void createCommand(const char* txtB, const char* txt, const char* txtE) {
GtkWidget* hbox     = gtk_hbox_new(false, 0);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
gtk_box_reorder_child(GTK_BOX(vbox),hbox, 1);
GtkWidget *hpaned = gtk_hpaned_new ();
gtk_box_pack_start (GTK_BOX (hbox), hpaned, TRUE, TRUE, 0);

GtkWidget *entryRunB = gtk_entry_new ();
gtk_paned_add1 (GTK_PANED (hpaned), entryRunB);

GtkWidget *hpaned2 = gtk_hpaned_new ();
gtk_paned_add2 (GTK_PANED (hpaned), hpaned2);
GtkWidget *entryRun = gtk_entry_new ();
gtk_paned_add1 (GTK_PANED (hpaned2), entryRun);

GtkWidget *entryRunE = gtk_entry_new ();
gtk_paned_add2 (GTK_PANED (hpaned2), entryRunE);


gtk_entry_set_text(GTK_ENTRY(entryRunB), txtB);
gtk_entry_set_text(GTK_ENTRY(entryRun), txt);
gtk_entry_set_text(GTK_ENTRY(entryRunE), txtE);

GtkWidget* buttonRun = gtk_button_new_with_label("Run");
gtk_box_pack_start (GTK_BOX (hbox), buttonRun, FALSE, FALSE, 0);
g_signal_connect( G_OBJECT(buttonRun), "clicked", G_CALLBACK(buttonRunClicked), hpaned);

GtkWidget* buttonCopy = gtk_button_new_with_label("+");
gtk_box_pack_start (GTK_BOX (hbox), buttonCopy, FALSE, FALSE, 0);
g_signal_connect( G_OBJECT(buttonCopy), "clicked", G_CALLBACK(buttonCopyClicked), hpaned);

GtkWidget* buttonDel = gtk_button_new_with_label("-");
gtk_box_pack_start (GTK_BOX (hbox), buttonDel, FALSE, FALSE, 0);
g_signal_connect( G_OBJECT(buttonDel), "clicked", G_CALLBACK(buttonDelClicked), hbox);

gtk_widget_show_all(hbox);
}

void buttonCopyClicked(GtkWidget *widget, GtkWidget* hpaned1) {
vector<string> vs=getCommandParts( hpaned1 );
createCommand(vs[0].c_str(), vs[1].c_str(), vs[2].c_str());
}

int main(int argc, char** argv) {
gtk_init(&argc, &argv);
GtkWidget* window    = gtk_window_new(GTK_WINDOW_TOPLEVEL);
vbox     = gtk_vbox_new(false, 0);
gtk_container_add(GTK_CONTAINER(window), vbox);

createCommand("ls", "", "");
createCommand("ls|wc -l", "", "");
g_signal_connect( G_OBJECT(window),  "delete_event", G_CALLBACK(gtk_main_quit), 0);
gtk_widget_show_all(window);
gtk_main();
return 0;
}

2
//gcc write2.c -nostdlib -lc
Значение переменных окружения
$ LD_LIBRARY_PATH=/lib time ./a.out
qwe

real        0.0
user        0.0
sys         0.0

sundev@sunhost:~/dwm$ time ./a.out
qwe

real   0m0.002s
user   0m0.000s
sys   0m0.002s


#define ECHO(S) write(1, S"\n", sizeof(S))

void _start(){
   ECHO("qwe");
   exit(0);
}

3
OpenIndiana / Как работает вход через консоль
« : Январь 10, 2018, 12:03:01 pm »
 svcs -l svc:/system/console-login:default
logfile      /var/svc/log/system-console-login:default.log
contract_id  142

по логу видно, что запускается /lib/svc/method/console-login

pgrep -c 142

sudo pargs 955
955:   /usr/sbin/ttymon -g -d /dev/console -l console -m ldterm,ttcompat -h -p sunhost
argv[0]: /usr/sbin/ttymon
argv[1]: -g
argv[2]: -d
argv[3]: /dev/console
argv[4]: -l
argv[5]: console
argv[6]: -m
argv[7]: ldterm,ttcompat
argv[8]: -h
argv[9]: -p
argv[10]: sunhost console login:



А потом запускается login
https://github.com/illumos/illumos-gate/blob/bccbd30bb6d0c20635d3f23e8d63f3f8170d3c46/usr/src/cmd/login/login.c

5
Разработки Kirov OSUG / Разделяемая память
« : Декабрь 03, 2017, 04:20:20 pm »
/* Программа 2 (06-1b.с) для иллюстрации работы с
разделяемой памятью */
/* Мы организуем разделяемую память для массива из
трех целых чисел. Первый элемент массива является
счетчиком числа запусков программы 1, т. е. данной
программы, второй элемент массива – счетчиком числа
запусков программы 2, третий элемент массива –
счетчиком числа запусков обеих программ */
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#include <errno.h>
int main()
{
    int *array;   /* Указатель на разделяемую память */
    int shmid;    /* IPC дескриптор для области разделяемой памяти */
    int new = 1;  /* Флаг необходимости инициализации элементов массива */
    char pathname[] = "1.c"; /* Имя файла,
        используемое для генерации ключа. Файл с таким
        именем должен существовать в текущей директории */
    key_t key;    /* IPC ключ */
    /* Генерируем IPC ключ из имени файла 06-1a.c в
    текущей директории и номера экземпляра области
    разделяемой памяти 0 */
    if((key = ftok(pathname,0)) < 0){
        printf("Can\'t generate key\n");
        exit(-1);
    }
    /* Пытаемся эксклюзивно создать разделяемую память
    для сгенерированного ключа, т.е. если для этого
    ключа она уже существует, системный вызов вернет
    отрицательное значение. Размер памяти определяем
    как размер массива из трех целых переменных, права
    доступа 0666 – чтение и запись разрешены для всех */
    if((shmid = shmget(key, 100*1024*1024,
        0666|IPC_CREAT|IPC_EXCL)) < 0){
    /* В случае возникновения ошибки пытаемся определить:
    возникла ли она из-за того, что сегмент разделяемой
    памяти уже существует или по другой причине */
        if(errno != EEXIST){
            /* Если по другой причине – прекращаем работу */
            printf("Can\'t create shared memory\n");
            exit(-1);
        } else {
            /* Если из-за того, что разделяемая память уже
            существует, то пытаемся получить ее IPC дескриптор
            и, в случае удачи, сбрасываем флаг необходимости
            инициализации элементов массива */
            if((shmid = shmget(key, 100*1024*1024, 0)) < 0){
                printf("Can\'t find shared memory\n");
                exit(-1);
            }
            new = 0;
        }
    }
    /* Пытаемся отобразить разделяемую память в адресное
    пространство текущего процесса. Обратите внимание на то,
    что для правильного сравнения мы явно преобразовываем
    значение -1 к указателю на целое.*/
    if((array = (int *)shmat(shmid, NULL, 0)) ==
        (int *)(-1)){
        printf("Can't attach shared memory\n");
        exit(-1);
    }
    /* В зависимости от значения флага new либо
    инициализируем массив, либо увеличиваем
    соответствующие счетчики */
    if(new){
        array[0] = 0;
        array[1] = 1;
        array[2] = 1;
    } else {
        array[1] += 1;
        array[2] += 1;
    }
    /* Печатаем новые значения счетчиков, удаляем разделяемую
    память из адресного пространства текущего процесса и
    завершаем работу */
    printf("Program 1 was spawn %d times, program 2 - %d times, total - %d times\n",
    array[0], array[1], array[2]);
    getchar();
    if(shmdt((char*)array) < 0){
        printf("Can't detach shared memory\n");
        exit(-1);
    }
    printf("shmdt executed\n");
    getchar();
    return 0;
}

6
gcc -O3 -fno-ident -I. -DLOCALE=\"ru_RU.UTF-8\" -c  set_lng.c
ld -s set_lng.o

Размер исполняемого файла около 500байт, но программа работает не на всех машинах. Может выдать ошибку Illegal Instruction (core dumped)

7
OpenIndiana / Ошибка pkg
« : Декабрь 08, 2016, 05:28:34 pm »
$ sudo pkg install  pkg:/developer/gnu-binutils@2.25.1-2016.0.1.2
Linked image publisher check
Traceback (most recent call last):
  File "/usr/bin/pkg", line 5444, in handle_errors
    __ret = func(*args, **kwargs)
  File "/usr/bin/pkg", line 5430, in main_func
    pargs=pargs, **opts)
  File "/usr/bin/pkg", line 2100, in install
    display_plan_cb=display_plan_cb, logger=logger)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/client_api.py", line 1554, in _install
    logger=logger)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/client_api.py", line 1442, in __api_op
    logger=logger, **kwargs)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/client_api.py", line 1313, in __api_plan
    display_plan_cb=display_plan_cb)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/client_api.py", line 1285, in __api_plan
    for pd in api_plan_func(**kwargs):
  File "/usr/lib/python2.7/vendor-packages/pkg/client/api.py", line 1517, in __plan_op
    log_op_end_all=True)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/api.py", line 1427, in __plan_op
    self.__linked_pubcheck(_op)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/api.py", line 1610, in __linked_pubcheck
    self._img.linked.api_recurse_pubcheck(self.__progresstracker)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/linkedimage/common.py", line 2367, in api_recurse_pubcheck
    _failfast=False))
  File "/usr/lib/python2.7/vendor-packages/pkg/client/linkedimage/common.py", line 2057, in __children_op
    stage=pkgdefs.API_STAGE_DEFAULT
  File "/usr/lib/python2.7/vendor-packages/pkg/client/linkedimage/common.py", line 2159, in __children_op_vec
    _syncmd_tmp, **kwargs)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/linkedimage/common.py", line 3229, in child_op_setup
    self.__child_setup_pubcheck(_pmd, **kwargs)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/linkedimage/common.py", line 3187, in __child_setup_pubcheck
    pkgdefs.PKG_OP_PUBCHECK)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/pkgremote.py", line 408, in setup
    self.__rpc_server_setup(img_path)
  File "/usr/lib/python2.7/vendor-packages/pkg/client/pkgremote.py", line 163, in __rpc_server_setup
    rpc_client = pkg.pipeutils.PipedServerProxy(client_cmd_pipe)
  File "/usr/lib/python2.7/vendor-packages/pkg/pipeutils.py", line 628, in __init__
    http_enc=http_enc)
  File "/usr/lib/python2.7/vendor-packages/pkg/pipeutils.py", line 412, in __init__
    rpc.Transport.__init__(self)
TypeError: __init__() takes exactly 2 arguments (1 given)


pkg: This is an internal error in pkg(5) version b2f36a5.  Please log a
Service Request about this issue including the information above and this
message.



Решение:
vi /usr/lib/python2.7/vendor-packages/pkg/pipeutils.py.

Добавить в секцию импорта:
import jsonrpclib.config as rpcconfig

Изменить строку 412 (теперь 413) на:
rpc.Transport.__init__(self,config=rpcconfig.DEFAULT)

8
Сеть, сетевые сервисы, сетевой софт / Ekiga 4.0.1
« : Декабрь 08, 2016, 05:15:15 am »
Открывает порты на каждом сетевом интерфейсе. Хотелось бы, чтобы открывала только на заданном.

Посмотрим, где это происходит
Для начала поставим gc++filt, если его еще нет
sudo pkg install pkg:/developer/gnu-binutils@2.25.1-2016.0.1.2
Запустим скрипт, а  потом екигу
sudo dtrace -n 'syscall::so_socket:entry/execname=="ekiga"/{ if((arg0 == 2)&&(arg1 == 2)&&(arg2 == 0)){ustack(); printf("family = %d, type_w_flags = %d, protocol = %d\n", arg0, arg1, arg2);} }'|gc++filt
dtrace: description 'syscall::so_socket:entry' matched 5 probes
CPU     ID                    FUNCTION:NAME
  0  12832                  so_socket:entry
              libc.so.1`_so_socket+0x15
              libsocket.so.1`__xnet_socket+0x23
              libpt.so.2.10.11`PSocket::os_socket(int, int, int)+0x25
              libpt.so.2.10.11`PTCPSocket::OpenSocket(int)+0x29
              libpt.so.2.10.11`PIPSocket::Listen(PIPSocket::Address const&, unsigned int, unsigned short, PSocket::Reusability)+0x1fe
              libpt.so.2.10.11`PTCPSocket::Listen(PIPSocket::Address const&, unsigned int, unsigned short, PSocket::Reusability)+0x2b
              libopal.so.3.10.10`OpalListenerTCP::Open(PNotifierTemplate<int> const&, OpalListener::ThreadMode)+0x1e6
              libopal.so.3.10.10`OpalEndPoint::StartListener(OpalListener*)+0xaf
              libopal.so.3.10.10`OpalEndPoint::StartListener(OpalTransportAddress const&)+0x17b
              libopal.so.3.10.10`OpalEndPoint::StartListeners(PStringArray const&)+0x104
              libekiga.so`Opal::H323::EndPoint::set_listen_port(unsigned int)+0x11f
              libekiga.so`Opal::H323::EndPoint::EndPoint(Opal::CallManager&, Ekiga::ServiceCore&, unsigned int, unsigned int)+0x1e2
              libekiga.so`OPALSpark::try_initialize_more(Ekiga::ServiceCore&, int*, char***)+0x8da
              libekiga.so`Ekiga::KickStart::kick(Ekiga::ServiceCore&, int*, char***)+0x2c0
              libekiga.so`engine_init(boost::shared_ptr<Ekiga::ServiceCore>, int, char**)+0x838
              ekiga`main+0x30e
              ekiga`_start+0x83
family = 2, type_w_flags = 2, protocol = 0

COMPONENT_NAME=opal
COMPONENT_VERSION=3.10.10
COMPONENT_SRC=$(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_ARCHIVE= $(COMPONENT_SRC).tar.xz

wget http://ftp.gnome.org/pub/GNOME/sources/$COMPONENT_NAME/3.10/$COMPONENT_ARCHIVE

wget http://ftp.gnome.org/pub/GNOME/sources/ekiga/4.0/ekiga-4.0.1.tar.xz

Протокол UDP
sudo soconfig -l

sudo dtrace -n 'syscall::so_socket:entry/execname=="ekiga"/{ if(((arg0 == 2)||(arg0 == 26))&&(arg1 == 1)){ustack(); printf("family = %d, type_w_flags = %d, protocol = %d\n", arg0, arg1, arg2);} }'|gc++filt




  1   8082                  so_socket:entry
              libc.so.1`_so_socket+0x7
              libsocket.so.1`__xnet_socket+0x23
              libpt.so.2.10.11`PSocket::os_socket(int, int, int)+0x25
              libpt.so.2.10.11`PUDPSocket::OpenSocket(int)+0x29
              libpt.so.2.10.11`PUDPSocket::PUDPSocket(unsigned short, int)+0xfd
              libpt.so.2.10.11`PMonitoredSockets::CreateSocket(PMonitoredSockets::SocketInfo&, PIPSocket::Address const&)+0x91
              libpt.so.2.10.11`PMonitoredSocketBundle::OpenSocket(PString const&)+0x56
              libpt.so.2.10.11`PMonitoredSocketBundle::Open(unsigned short)+0xc5
              libopal.so.3.10.10`OpalListenerUDP::Open(PNotifierTemplate<int> const&, OpalListener::ThreadMode)+0x3c
              libopal.so.3.10.10`OpalEndPoint::StartListener(OpalListener*)+0xaf
              libopal.so.3.10.10`OpalEndPoint::StartListener(OpalTransportAddress const&)+0x17b
              libopal.so.3.10.10`OpalEndPoint::StartListeners(PStringArray const&)+0x104
              libekiga.so`Opal::Sip::EndPoint::set_listen_port(unsigned int)+0x13c
              libekiga.so`Opal::Sip::EndPoint::EndPoint(Opal::CallManager&, Ekiga::ServiceCore&, unsigned int)+0x550
              libekiga.so`OPALSpark::try_initialize_more(Ekiga::ServiceCore&, int*, char***)+0x811
              libekiga.so`Ekiga::KickStart::kick(Ekiga::ServiceCore&, int*, char***)+0x2c0
              libekiga.so`engine_init(boost::shared_ptr<Ekiga::ServiceCore>, int, char**)+0x838
              ekiga`main+0x30e
              ekiga`_start+0x83
family = 2, type_w_flags = 1, protocol = 0

Поменял тут: libekiga.so`Opal::Sip::EndPoint::set_listen_port(unsigned int)
ekiga-4.0.1/lib/engine/components/opal/sip-endpoint.cpp
Opal::Sip::EndPoint::set_listen_port (unsigned port)
{
  unsigned udp_min, udp_max;

  listen_iface.protocol = "udp";
  listen_iface.voip_protocol = "sip";
  listen_iface.id = "*";

  manager.get_udp_ports (udp_min, udp_max);

  if (port > 0) {

    std::stringstream str;
    RemoveListener (NULL);

    str << "udp$192.168.1.1:" << port; //!
    if (!StartListeners (PStringArray (str.str ()))) {

      port = udp_min;
      str << "udp$*:" << port;
      while (port <= udp_max) {

        if (StartListeners (PStringArray (str.str ()))) {

          listen_iface.port = port;
          return true;
        }

        port++;
      }
    }
    else {
      listen_iface.port = port;
      return true;
    }
  }

  return false;
}


Отключить STUN
#define NAT_KEY "/apps/" PACKAGE_NAME "/general/nat/"

  else if (key == NAT_KEY "stun_server") {

    gchar* stun_server = gm_conf_entry_get_string (entry);
    manager.set_stun_server (stun_server ? stun_server : "stun.ekiga.net");
    g_free (stun_server);
  }
  else if (key == NAT_KEY "enable_stun") {

    manager.set_stun_enabled (gm_conf_entry_get_bool (entry));
  }

9
OpenIndiana / Компиляция PHP
« : Август 05, 2016, 04:54:16 pm »
http://ar2.php.net/get/php-5.6.24.tar.bz2/from/this/mirror
./configure
make
Будет ошибка
/usr/include/sys/feature_tests.h:355:2: #error "Compiler or options invalid; UNIX 03 and POSIX.1-2001 applications    require the use of c99"

Надо скомпилить этот файл с параметром -std=c99

/bin/sh /home/True/Скачивание/php-5.6.24/libtool --silent --preserve-dup-deps --mode=compile gcc -I/home/True/Скачивание/php-5.6.24/ext/sqlite3/libsqlite -DSQLITE_ENABLE_FTS3=1 -DSQLITE_CORE=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_THREADSAFE=0  -Iext/sqlite3/ -I/home/True/Скачивание/php-5.6.24/ext/sqlite3/ -DPHP_ATOM_INC -I/home/True/Скачивание/php-5.6.24/include -I/home/True/Скачивание/php-5.6.24/main -I/home/True/Скачивание/php-5.6.24 -I/home/True/Скачивание/php-5.6.24/ext/date/lib -I/home/True/Скачивание/php-5.6.24/ext/ereg/regex -I/usr/include/libxml2 -I/home/True/Скачивание/php-5.6.24/ext/sqlite3/libsqlite -I/home/True/Скачивание/php-5.6.24/TSRM -I/home/True/Скачивание/php-5.6.24/Zend  -D_POSIX_PTHREAD_SEMANTICS  -I/usr/include -g -O2  -c /home/True/Скачивание/php-5.6.24/ext/sqlite3/libsqlite/sqlite3.c -std=c99 -o ext/sqlite3/libsqlite/sqlite3.lo

make
make test

10
OpenIndiana / flashplayer после oi151.7
« : Январь 06, 2016, 09:17:23 am »
Нормально воспроизводится звук, но не видео

ptree
1552  /usr/lib/firefox37/lib/firefox-37.0/firefox.exe
      1577  /usr/lib/firefox37/lib/firefox-37.0/plugin-container /usr/lib/firef

truss -p 1577

/3:     lwp_park(0x00000000, 0)                         = 0
/1:     lwp_unpark(3)                                   = 0
/3:     open("/dev/cpu/self/cpuid", O_RDONLY)           = 18
/10:    clock_gettime(4, 0xF25FEC08)                    = 0
/3:     ioctl(18, (('c'<<24)|('i'<<16)|('d'<<8 ) | 0), 0xF45EEE08) = 0
/3:     close(18)                                       = 0
/3:         Incurred fault #6, FLTBOUNDS  %pc = 0xF5195DC2
/3:           siginfo: SIGSEGV SEGV_MAPERR addr=0x00000014
/3:         Received signal #11, SIGSEGV [default]
/3:           siginfo: SIGSEGV SEGV_MAPERR addr=0x00000014

mdb core
mdb: core file data for mapping at ef4a0000 not saved: Bad address
mdb: core file data for mapping at ef6e0000 not saved: Bad address
mdb: core file data for mapping at f19c0000 not saved: Bad address
mdb: core file data for mapping at f1de0000 not saved: Bad address
mdb: core file data for mapping at f23a0000 not saved: Bad address
mdb: core file data for mapping at f2780000 not saved: Bad address
Loading modules: [ libc.so.1 libuutil.so.1 libnvpair.so.1 ld.so.1 ]
> $C
f45eede8 0xf5195dc2(f261c000, 280, b4, 280, 280, f1a85010)
f45eee48 0xf51745e9(8046550, 280, b4, f45eeeb0, 280, 280)
f45eeed8 0xf4e02645(f4272700, 8046550, 0, b4)
f45eef08 0xf4b7d181(f4209070, fef5a000, f45eef88, f49aa20e)
f45eef88 0xf49aa236(f4209078, 0, 0, 0)
f45eefa8 0xf49aa290(f4209078, 62, f7dc12a0, fef5a000)
f45eefc8 0xf49a9f50(f4209078, 0, 0, 0)
f45eefe8 libc.so.1`_thrp_setup+0x88(f7dc1240)
f45eeff8 libc.so.1`_lwp_start(f7dc1240, 0, 0, 0, 0, 0)
>


Ключ к пониманию проблемы  в сравнении /illumos-gate/usr/src/uts/common/sys/cpuid_drv.h с его предыдущей версией
http://src.illumos.org/source/diff/illumos-gate/usr/src/uts/common/sys/cpuid_drv.h?r2=%2Fillumos-gate%2Fusr%2Fsrc%2Futs%2Fcommon%2Fsys%2Fcpuid_drv.h%40ebb8ac078e9265f87093fbb363e8c2cbc6ee13e6&r1=%2Fillumos-gate%2Fusr%2Fsrc%2Futs%2Fcommon%2Fsys%2Fcpuid_drv.h%407c478bd95313f5f23a4c958a745db2134aa03244


11
OpenSolaris / Re: Полезные скрипты DTrace
« : Август 15, 2015, 07:29:42 am »
Определение времени, потраченного в сумме на каждую функцию. Скрипт подходит для многопоточных приложений.

$ cat a.out.d
#!/usr/sbin/dtrace -s
pid$1:a.out::entry{
   self->ts[probefunc] = timestamp;
}

pid$1:a.out::return
/self->ts[probefunc]/
{
   @func_time[probefunc] = sum(timestamp - self->ts[probefunc]);
   self->ts[probefunc] = 0;
}

Запуск pfexec ./a.out.d `pgrep a.out`

12
Чтобы при уточнении времени оно устанавливалось правильно, следует задать часовой пояс в /etc/default/init в переменной TZ. Например "Europe/Minsk". Возможные значения выводятся по команде find /usr/share/lib/zoneinfo

13
Нашел пачт, чтобы сделать добавить трей в правом верхем углу: http://dwm.suckless.org/patches/systray

Чтобы отображались дата и время, а также менялась раскладка:
keremet@openindiana:~$ cat .xinitrc
setxkbmap -layout "us,ru"
setxkbmap -option "grp:ctrl_shift_toggle"
while xsetroot -name "`date '+%d.%m.%y %H:%M:%S'`"
    do
       sleep 1
    done &
exec dwm

14
А когда gedit падает, он выдает какие-нибудь сообщения? У меня он и из терминала, и из dmenu нормально открывается

15
Забыл  написать: чтобы собралось dmenu, надо изменить CFLAGS в config.mk - убрать опцию -D_POSIX_C_SOURCE=2

Страницы: [1] 2 3 ... 31