Inline варіації стандарту C99 та GNU

Всім привіт Зацікавився одним питанням з приводу модифікаторів вбудованих функцій (inline) для стандартів C99 і GNU
Перше що мене збентежило, так це уривок із книги
Функції з підстановкою тіла оголошуються за допомогою ключових слів staic та inline у декларації функції. Наприклад,
Декларація функції має бути описана перед будь-яким її викликом, інакше під-
становлення тіла не буде здійснено. Стандартний прийом – це розміщення функцій
з підстановкою тіла у заголовних файлах. Оскільки функція оголошується як
статична (static), екземпляр функції без підстановки тіла не створюється. Якщо
функція з підстановкою тіла використовується тільки в одному файлі, то вона може
бути розміщена у верхній частині цього файлу.
Але пізніше я нарвався на статтю http://www.greenend.org.uk/rjk/2003/03/inline.html тут розглядаються ще варіації використання функцій, що вбудовуються (розділ стандарту C99) і якщо я правильно переклав текст, то мої висновки наступні: inline - означає вбудована тільки в тому модулі, де оголошена і визначена, для інших модулів ЗАГАЛЬНО не доступна extern inline - вбудована тільки в тому модулі, де визначено і оголошено, але код створюється , так що її можна смикати з інших модулів, де вона вже буде неустроюваною static inline - взагалі не зрозумів відмінність від звичайної inline
ЗИ: Яким же стандартом керуються розробники ядра linux? Тому що ось ядерний хедер