Задать вопрос
Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (3)

Наибольший вклад в теги

Все теги (10)

Лучшие ответы пользователя

Все ответы (7)
  • Что такое other speed descriptor применительно к USB?

    CleverMouse
    @CleverMouse
    Первый байт любого usb-дескриптора — длина, второй байт — тип. Дескриптор 09 07 4A 00 01 02 01 C0 28 имеет тип 7, OTHER_SPEED_CONFIGURATION.

    Видели когда-нибудь сообщение «Это устройство может работать быстрее»?

    Если HighSpeed-устройство (скорость USB2) подключить к компьютеру или хабу, не понимающему USB2, а знающему только скорости USB1 FullSpeed/LowSpeed, устройство обязано проходить несколько начальных этапов инициализации как FullSpeed. Полностью работать не обязано, хотя обычно работает. Дескриптор OTHER_SPEED_CONFIGURATION, если он есть, — способ устройства в такой ситуации сообщить системе, что хоть оно сейчас и работает на FullSpeed, но про HighSpeed тоже знает, просто хаб такой попался по пути или компьютер старый. У чисто FullSpeed-устройств его нет.

    Частично правильную ссылку на документацию вам уже привели выше. В USB3 тип 7 помечен как Reserved и не используется, но есть ссылка «Note that when operating at USB 2.0 speeds, the device shall report the other USB 2.0 speeds it supports using the standard mechanism defined in the USB 2.0 specification». Читать нужно спецификацию USB2, пункт, действительно, 9.6.4. Впрочем, там не особенно интересно — структура дескриптора точно такая же, как структура обычного Configuration Descriptor, с поправкой на тип.
    Ответ написан
    Комментировать
  • С++. Создание и инициализация произвольного std контейнера через template?

    CleverMouse
    @CleverMouse
    Если же vector хочется оставить, а убрать только int, тогда даже дополнительного класса не нужно. Правда, нужно учитывать, что у std::vector на самом деле два параметра шаблона.
    template<template<typename U, typename Allocator> class Container, typename T, size_t n>
    Container<T, allocator<T> > ContainerMake(const T(&array)[n])
    {
    	return Container<T, allocator<T> >(array, array + n);
    }
    
    const int vals1[] = {0, 1, 2, 3, 4};
    vector<int> vct1 = ContainerMake<vector>(vals1);
    
    
    Ответ написан
    1 комментарий
  • Програма есть, но она не запускается

    CleverMouse
    @CleverMouse
    В формате ELF за загрузку динамических библиотек отвечает специальная библиотека-интерпретатор aka interpreter, имя которой указано в специальном сегменте elf-файла. Если ядро при exec() обнаруживает такой заголовок, то ядро берёт оттуда имя интерпретатора и пытается загрузить и начать выполнение новой программы с интерпретатора. Если запрошенного интерпретатора на диске не оказывается, создание процесса фейлится с кодом ошибки «файл не найден». С точки зрения создателя — на картинке это bash — это ничем не отличается от отсутствия бинарника, а ядро, которое знает разницу, на терминал ничего не выводит в принципе.
    Посмотреть, какой интерпретатор нужен программе, можно через readelf -l . В данном случае явно из 64-битного окружения куда-то слетел 32-битный интерпретатор.
    Ответ написан
    Комментировать
  • Подсчет хеша веб странички (HTML)

    CleverMouse
    @CleverMouse
    Почитайте статью от Яндекса как раз про этот вопрос: download.yandex.ru/company/download/paper_65_v1.pdf. И ссылки оттуда.
    Ответ написан
    Комментировать