SlideShare a Scribd company logo
1 of 92
Download to read offline
Coding Style in Linux kernel
          Peter Chang
          2012/06/17
Reference
“Linux Kernel Coding Style”, Linus Torvals, https://
computing.llnl.gov/linux/slurm/coding_style.pdf

“Documentation / Coding-Style”, Greg Kroah-
Hartman, IBM, Linux Symposium 2002

   (Slide version: http://www.kroah.com/linux/
   talks/ols_2002_kernel_codingstyle_talk/html/
   index.html)

http://www.kernel.org/doc/Documentation/
CodingStyle
“First off, I'd suggest printing out a copy of
the GNU coding standards, and NOT read it.

Burn them, it's a great symbolic gesture.”
~ Linus Torvalds
Indentation
Indentation


All tabs are 8 characters.

Use tabs.

If your code need 3 layers of indentation, it’s
your problem. Solve it!
Indentation


Don’t put two statement in the same line.

Use a good editor. Don’t put andy empty line
in the end of any file.
Indentation



Put switch and case into the same layer
of indentation
Indentation
Indentation

Good examples:

  fs/*

  kernel/*

Bad examples:

  drivers/scsi/sg.c
Break long lines & strings
Break long lines & strings



 There are only   80 char. in a line.
 Because we hate this:
Break long lines & strings
Braces
Braces
Braces
Braces
Braces
Braces
Braces
Braces
Braces

Good examples:

  drivers/scsi/qla1280.c

  kernel/*.c

Bad examples:

  fs/devfs/*
Spaces
Spaces



“To be, or not to be”
Spaces

Use a space after these keywords:

  if, switch, case, for, do, while

Do not add spaces after these keywords:

  sizeof, typeof, alignof,
  __attribute__
Spaces


Good example:

  s = sizeof(struct file);

Suck example:

  s=sizeof( struct file );
Spaces

Add a space before and after the following
binary and ternary operators:

  =,+,-,*,/

  <,>,%,&,|,^

  <= , >= , == , != , ? , :
Spaces


DO NOT       Add a space after the following
operators:

  &, *, +, -, ~, !, sizeof, typeof, alignof,
  __attribute__, define
Spaces


DO NOT      add a space before and after the
following operators:

  ++,--
Spaces


DO NOT      add a space before and after the
following operators:

  .

  ->
Naming
Naming


Be descriptive

Be concise

Good example:

  void enable_mem_mailbox();
Naming

No MiXedCaSe

Bad examples:

  int CommandAllocationGroupSize;

  void
  DAC960_V1_EnableMemoryMailboxInterfa
  ce();
Naming



Global variable should be use only if
they are absolutely necessary.
Naming

Local variable should be short and the point

Good example:

  i,j ( as a counter for a loop )

Bad example:

  loop_counter
Naming


Don’t encoding the type of a function into
the name (a.k.a. Hungarian notation).

“It’s brain damaged” ~ Linus Torvalds
Functions
Functions



Do one thing, and do it well

Short, one or two screens of text
Functions



Okay to have longer function doing small
different things
Functions


“如果你寫出了⼀一個很複雜的function,表示你
可能程度比高中⼀一年級的學生還差,因為你不
會用function”~ Linus Torvalds
Functions



If more than 10 local variables, it’s too
complex
Functions


“人最多同時只能記7件不同的事情。如果你覺
得你是天才,那或許你兩個星期後就還看的懂
你那複雜的函式”~ Linus Torvalds
Functions


Separate different functions with a blank line

If your function will be exported, use
EXPORT* macro
Functions
Indentation
Good examples:

  fs/*.c

Bad examples:

  drivers/hotplug/ibmphp_res.c

     include WTF 370 lines

  drivers/usb/serial/usbserials.c

     use WTF 21 local variables
GOTO
Centralize exiting of functions
被封印的GOTO

“危險,不要用”

 ~ 好像小時候聽大人講過

“下⼀一節是要講Goto,但我們跳過,你們寫程式
也不要用Goto”

 ~ 好像當初上大⼀一程設上課有講過
只是歷史遺跡?


組合語言發展過來的遺跡?

 jump?

 branch?
難道GOTO錯了嗎?
As the matter of fact, ...


  The equivalent to GOTO statement is used
  frequently by compiler.

  For what?

    Unconditional jump instruction
Timing of using GOTO



Let function from multiple exit to only one
exit
Reason of using GOTO

Unconditional statements are easier to
understand and follow

nested is reduced!!!

errors by not updating individual exit points
when making modifications are prevented

saves the compiler work to optimize
redundant code away ;)
Example of using GOTO
Comment
Comments

Bad comments

  explain how code works

  say who wrote this function

  have last modified date

  have other trivial things
Comments


Good comments

  explain what

  explain why

  should be at the beginning of function
Comments


Do not use:

  / statement of comment ( C99-style )
   /

Do use:

  /* statement of comment ( C89-style) */
Comments
Comments
Comments
Kconfig
Indentation of Kconfig


Lines under a "config" definition are indented
with one tab

help text is indented an additional two
spaces
Indentation of Kconfig
Unstable Features in Kconfig



  Features that might still be considered
  unstable should be defined as dependent on
  "EXPERIMENTAL   "
Unstable Features in Kconfig
Dangerous feature in Kconfig



 seriously dangerous features should
 advertise this prominently in their prompt
 string
Dangerous feature in Kconfig
Macro, enum, RTL
CAPITALIZE


Names of macros defining constants

labels in enums

  For defining several related constants
CAPITALIZE



Example:

  #define CONSTANT 0xffff0000
LOOOOONG Macro



Macros with multiple statements should be
enclosed in a do - while block
LOOOOONG Macro
Don’t use macro in these cases



 1. macros that affect control flow

   It looks like a function call but exits the
   "calling" function; don't break the internal
   parsers of those who will read the code.
Don’t use macro in these cases
Don’t use macro in these cases


 2. macros that depend on having a local
 variable with a magic name

   might look like a good thing, but it's
   confusing as hell when one reads the code
   and it's prone to breakage from seemingly
   innocent changes.
Don’t use macro in these cases




 Example for 2:

   #define FOO(val) bar(index, val)
Don’t use macro in these cases


 3. macros with arguments that are used as
 l-values

   Ex: FOO(x) = y;

   will bite you if somebody e.g. turns FOO
   into an inline function
Don’t use macro in these cases


 4. forgetting about precedence

   macros defining constants using
   expressions must enclose the expression in
   parentheses.

   Beware of similar issues with macros using
   parameters.
Don’t use macro in these cases
Allocate memory
Function return value and names
Unwritten rules
Unwritten rules


Use code that is already present

  string

  byte order functions

  linked lists
typedef is evil
EVIL! EVIL! EVIL!
It hides the real type of the variable

Allows programmers to get into trouble

   large struct. on the stack

   large struct. passed as return value

Can hid e long structure definition

   pick a better name

typedef just signify a pointer type

   could you be lazier?
Well, mostly...


Base system types

  list_t

  u8, u16, u64

Function pointer
No #ifdef in .c files



#ifdef belongs in .h file

Let your compiler do its work
Labeled elements in
    Initializers
Labeled elements in
    Initializers
Labeled elements in
    Initializers
Labeled elements in
    Initializers
Labeled elements in
    Initializers

More Related Content

What's hot

Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料Nobuhiro Iwamatsu
 
Introduction to RCU
Introduction to RCUIntroduction to RCU
Introduction to RCUKernel TLV
 
Coding standards and guidelines
Coding standards and guidelinesCoding standards and guidelines
Coding standards and guidelinesbrijraj_singh
 
Implementing the IO Monad in Scala
Implementing the IO Monad in ScalaImplementing the IO Monad in Scala
Implementing the IO Monad in ScalaHermann Hueck
 
FreeIPA - Attacking the Active Directory of Linux
FreeIPA - Attacking the Active Directory of LinuxFreeIPA - Attacking the Active Directory of Linux
FreeIPA - Attacking the Active Directory of LinuxJulian Catrambone
 
Easiest way to start with Shell scripting
Easiest way to start with Shell scriptingEasiest way to start with Shell scripting
Easiest way to start with Shell scriptingAkshay Siwal
 
Useful Linux and Unix commands handbook
Useful Linux and Unix commands handbookUseful Linux and Unix commands handbook
Useful Linux and Unix commands handbookWave Digitech
 
XPDDS18: A dive into kbuild - Cao jin, Fujitsu
XPDDS18: A dive into kbuild - Cao jin, FujitsuXPDDS18: A dive into kbuild - Cao jin, Fujitsu
XPDDS18: A dive into kbuild - Cao jin, FujitsuThe Linux Foundation
 
Linux Locking Mechanisms
Linux Locking MechanismsLinux Locking Mechanisms
Linux Locking MechanismsKernel TLV
 
Chapter 8 Inheritance
Chapter 8 InheritanceChapter 8 Inheritance
Chapter 8 InheritanceAmrit Kaur
 
Linux Kernel Development
Linux Kernel DevelopmentLinux Kernel Development
Linux Kernel DevelopmentPriyank Kapadia
 

What's hot (20)

Estructuras repetitivas
Estructuras repetitivasEstructuras repetitivas
Estructuras repetitivas
 
Linux shell
Linux shellLinux shell
Linux shell
 
Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料
 
Introduction to RCU
Introduction to RCUIntroduction to RCU
Introduction to RCU
 
Shell scripting
Shell scriptingShell scripting
Shell scripting
 
Coding standards and guidelines
Coding standards and guidelinesCoding standards and guidelines
Coding standards and guidelines
 
Implementing the IO Monad in Scala
Implementing the IO Monad in ScalaImplementing the IO Monad in Scala
Implementing the IO Monad in Scala
 
Coding standards
Coding standardsCoding standards
Coding standards
 
FreeIPA - Attacking the Active Directory of Linux
FreeIPA - Attacking the Active Directory of LinuxFreeIPA - Attacking the Active Directory of Linux
FreeIPA - Attacking the Active Directory of Linux
 
The linux shell. Shell Scripting desde 0
The linux shell. Shell Scripting desde 0The linux shell. Shell Scripting desde 0
The linux shell. Shell Scripting desde 0
 
Coding standard
Coding standardCoding standard
Coding standard
 
Easiest way to start with Shell scripting
Easiest way to start with Shell scriptingEasiest way to start with Shell scripting
Easiest way to start with Shell scripting
 
Useful Linux and Unix commands handbook
Useful Linux and Unix commands handbookUseful Linux and Unix commands handbook
Useful Linux and Unix commands handbook
 
XPDDS18: A dive into kbuild - Cao jin, Fujitsu
XPDDS18: A dive into kbuild - Cao jin, FujitsuXPDDS18: A dive into kbuild - Cao jin, Fujitsu
XPDDS18: A dive into kbuild - Cao jin, Fujitsu
 
Linux Locking Mechanisms
Linux Locking MechanismsLinux Locking Mechanisms
Linux Locking Mechanisms
 
Chapter 8 Inheritance
Chapter 8 InheritanceChapter 8 Inheritance
Chapter 8 Inheritance
 
Introduction to Makefile
Introduction to MakefileIntroduction to Makefile
Introduction to Makefile
 
88 c-programs
88 c-programs88 c-programs
88 c-programs
 
Linux Kernel Development
Linux Kernel DevelopmentLinux Kernel Development
Linux Kernel Development
 
C++20 features
C++20 features C++20 features
C++20 features
 

Similar to Coding style of Linux Kernel

(6) c sharp introduction_advanced_features_part_i
(6) c sharp introduction_advanced_features_part_i(6) c sharp introduction_advanced_features_part_i
(6) c sharp introduction_advanced_features_part_iNico Ludwig
 
Standard coding practices
Standard coding practicesStandard coding practices
Standard coding practicesAnilkumar Patil
 
New c sharp3_features_(linq)_part_ii
New c sharp3_features_(linq)_part_iiNew c sharp3_features_(linq)_part_ii
New c sharp3_features_(linq)_part_iiNico Ludwig
 
Android coding standard
Android coding standard Android coding standard
Android coding standard Rakesh Jha
 
Basics java programing
Basics java programingBasics java programing
Basics java programingDarshan Gohel
 
JavaScript: Core Part
JavaScript: Core PartJavaScript: Core Part
JavaScript: Core Part維佋 唐
 
Best Coding Practices in Java and C++
Best Coding Practices in Java and C++Best Coding Practices in Java and C++
Best Coding Practices in Java and C++Nitin Aggarwal
 
cbybalaguruswami-e-180803051831.pptx
cbybalaguruswami-e-180803051831.pptxcbybalaguruswami-e-180803051831.pptx
cbybalaguruswami-e-180803051831.pptxSRamadossbiher
 
cbybalaguruswami-e-180803051831.pptx
cbybalaguruswami-e-180803051831.pptxcbybalaguruswami-e-180803051831.pptx
cbybalaguruswami-e-180803051831.pptxSRamadossbiher
 
What's coming to c# (Tel-Aviv, 2018)
What's coming to c# (Tel-Aviv, 2018)What's coming to c# (Tel-Aviv, 2018)
What's coming to c# (Tel-Aviv, 2018)Moaid Hathot
 
About Functional Programming
About Functional ProgrammingAbout Functional Programming
About Functional ProgrammingAapo Kyrölä
 
Style guideshell
Style guideshellStyle guideshell
Style guideshellblaap
 

Similar to Coding style of Linux Kernel (20)

(6) c sharp introduction_advanced_features_part_i
(6) c sharp introduction_advanced_features_part_i(6) c sharp introduction_advanced_features_part_i
(6) c sharp introduction_advanced_features_part_i
 
Standard coding practices
Standard coding practicesStandard coding practices
Standard coding practices
 
C++ Training
C++ TrainingC++ Training
C++ Training
 
New c sharp3_features_(linq)_part_ii
New c sharp3_features_(linq)_part_iiNew c sharp3_features_(linq)_part_ii
New c sharp3_features_(linq)_part_ii
 
Android coding standard
Android coding standard Android coding standard
Android coding standard
 
Basics java programing
Basics java programingBasics java programing
Basics java programing
 
c# at f#
c# at f#c# at f#
c# at f#
 
C# AND F#
C# AND F#C# AND F#
C# AND F#
 
Switch case looping
Switch case loopingSwitch case looping
Switch case looping
 
C notes.pdf
C notes.pdfC notes.pdf
C notes.pdf
 
JavaScript: Core Part
JavaScript: Core PartJavaScript: Core Part
JavaScript: Core Part
 
Best Coding Practices in Java and C++
Best Coding Practices in Java and C++Best Coding Practices in Java and C++
Best Coding Practices in Java and C++
 
C++primer
C++primerC++primer
C++primer
 
Bb Tequila Coding Style (Draft)
Bb Tequila Coding Style (Draft)Bb Tequila Coding Style (Draft)
Bb Tequila Coding Style (Draft)
 
cbybalaguruswami-e-180803051831.pptx
cbybalaguruswami-e-180803051831.pptxcbybalaguruswami-e-180803051831.pptx
cbybalaguruswami-e-180803051831.pptx
 
cbybalaguruswami-e-180803051831.pptx
cbybalaguruswami-e-180803051831.pptxcbybalaguruswami-e-180803051831.pptx
cbybalaguruswami-e-180803051831.pptx
 
What's coming to c# (Tel-Aviv, 2018)
What's coming to c# (Tel-Aviv, 2018)What's coming to c# (Tel-Aviv, 2018)
What's coming to c# (Tel-Aviv, 2018)
 
About Functional Programming
About Functional ProgrammingAbout Functional Programming
About Functional Programming
 
Style guideshell
Style guideshellStyle guideshell
Style guideshell
 
Os Goodger
Os GoodgerOs Goodger
Os Goodger
 

Recently uploaded

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 

Recently uploaded (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

Coding style of Linux Kernel