ReactOS/Windows *CriticalSection API → Linux

Вчера портировал часть «РеактОС» под Линукс, пришлось разобраться что делает небольшой фрагмент АПИ Виндоуз («РеактОС» — это операционная система, совместима с Виндоуз).

Функции оказались небольшими, но вдруг кому-то время сэкономит:

#include <pthread.h>

inline void InitializeCriticalSection(CRITICAL_SECTION *cs)
{
    pthread_mutexattr_t mAttr;
    pthread_mutexattr_settype(&mAttr, PTHREAD_MUTEX_RECURSIVE_NP);
    pthread_mutex_init((pthread_mutex_t *) (void *) cs, &mAttr);
    pthread_mutexattr_destroy(&mAttr);
}

inline void DeleteCriticalSection(CRITICAL_SECTION *cs)
{
    pthread_mutex_destroy((pthread_mutex_t *) (void *) cs);
}

inline void EnterCriticalSection(CRITICAL_SECTION *cs)
{
    pthread_mutex_lock ((pthread_mutex_t *) (void *) cs);
}

inline void LeaveCriticalSection(CRITICAL_SECTION *cs)
{
    pthread_mutex_unlock ((pthread_mutex_t *) (void *) cs);
}

После этого все другие обращения к структуре CRITICAL_SECTION нужно, конечно, убрать, иначе код будет падать.

3 комментария

Лучше сова в руках, чем жаровонок в небе

В Твиттере интересуются моими «экспериментами» по преобразованию меня в «жаворонка».

Напоминаю, что это не эксперимент, а производственная необходимость — мне нужно быть на работе в 9 часов, что для совы довольно рано. Я уже более полутора лет живу в режиме самоизнасилования, в моей жизни и раньше встречались такие моменты — когда я учился. Например, в Университете стало полегче — многие утренние пары можно было прогулять, но кроме этого были ещё школа и техникум.

Напоминаю чем отличается «сова» от просто ленивого человека: если «сова» встаёт раньше положенного, то почти всё утреннее время она будет тупить. В моём случае совсем всё плохо, самое плодотворное у меня время — после 8 вечера, а в десять мне уже желательно лечь спать.

Второе — вставать очень тяжело.

От утреннего тупняка мне никуда не деться, а чуть-чуть облегчить жизнь со вставанием по утрам получается. Совета всего три: режим, плотные шторы, утренний душ.

Одно время в СССР было популярно приучать себя и детей к режиму. Книжки, фильмы, мультики — всё это показывало положительных героев, живущих по режиму. В детстве ничего из этого не вышло, теперь же мой утренний распорядок таков:

7:00 — подъём (никаких вторых и третьих будильников, встаю сразу) 7:05 — лёгкий завтрак 7:15 — душ (в моём случае — ванна, душ я не люблю, ванну — люблю, вода почему-то помогает чуть проснуться) 7:30 — конец водных процедур 7:35 — чтение новостей, утренней почты 7:45 — вызываю такси, собираю сумку, делаю мелкие вещи по дому, одеваюсь 8:00 — выхожу из дома к такси (тут время варьироваться может, в зависимости от такси)

Кроме того, в выходные я позволяю себе расслабиться, но не «отоспаться» — это, похоже, скорее вредит. Встаю часов в 9—10, очень редко позже, только если плохо себя чувствую.

Плотные (совсем не пропускающие свет) шторы мне посоветовал кто-то из читателей. Спасибо, я приобрёл. Засыпать стал лучше, это помогает лучше высыпаться.

37 комментариев

Пятничная загадка для PHPшников

В ЖЖ увидел прекрасное — загадку про ПХП.

Те, кто знает этот язык, скажите, почему этот код не выдаёт ошибок или предупреждений (все ошибки, конечно, включены):

<?php
//bolknote.ru
?>

16 комментариев