Merken

How to design a Linux kernel interface

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Beta
Erkannte Entitäten
Sprachtranskript
In our next speaker of the microchambers and never talk about on how to design a Linux condensed-phase please give novels if the not enough meaning OK country so that you can have all writing and so on until about minus command faces I suppose I should begin by saying that this is mostly not going to be a technical talk by most again talk about processes so if you want to leave knows you chance and so I see this sort of problem mostly for a process and practice so social perspective on one's progress some examples of the kinds of things that go role and and what mainly a matter of process if you got here early you sort of a rotating sliding go had up which had a design problem we would have lived with rural a from is the for more than 30 years now and it's it's it's a consequence of the kind of policy happening again and again unless come development but were not the 1st to make the sort of problems where press just again the biggest that doing these things even the basic problems the and the the the point about these problems when we make these mistakes we live with them for a very long time the yeah the yeah but the OK so just a little bit about myself on the maintainable Linux man pages projects have been involved that produce about 15 years now I right a lot of what's on the vote re read from time to time and I spent a lot of time looking idea lies ahead the law of the API design review testing over the years so I wrote a book about API Linux as well and so a lot of new API eyes for quite a long time and seeing some things that happen again and again as it already this is mainly a process called non-technical talk I end this brief you so things all talk about so a lot of it is kind of obvious and it's a question of why we don't do it or we haven't done much in the past so
so when it comes to a idealize implementation API is is the least of the problems of I think there is you get full is wrong and fix it later and at the binds well they can be fixed are better at hiding but they can be fixed and the very big problem of course is a she getting a proper designed for the API i API designs are hardly rights that usually you can fix them once release them at the reason of course is that so that you fix then that usually means breaking the ABI and of course you stop this guy's smiling and this is 1 of the push-button laser getting Minister yellow there is here to available we think that fix the aid I make if you have questions will break and that will be pretty much guaranteed giving us unhappy yeah I
but having of course is that you get this wrong thousands of users space programs and look at your mistake forget gates and the B is the sockets example had at the beginning here is just such a case and so I can shake your eyes a lot of different kinds of API is no most kernel once you file systems net link the virtual devices signals system calls and multiplexer system calls things like I CTL and PRC element uh these ways of things and so then nor a new system called what really they are what is called now CTL and and in this review and may be less resistance but many rest system calls my examples at least so when the on say about designing realizes the we're designing you bring is that the new or outside you use case so 1 of my favorite examples here's Poseican choose but I do know if you're familiar with misuse basically to message passing ITC mechanism in the kernel you can cure messages and the messages have priority it's higher party with get the limit soon low-priority messages the usual use case of posits shoes is you got a real sitting around like you always reading incoming messages deal with them pretty quickly and perhaps noun in a writer comes along and puts a message in the queue are but this is always a reader this never many messages which you perhaps the most a few messages and you a lot of time 0 just 1 message in the queue the people origin of posits code and the expected use case public messages relevant Linux 2 . 6 . 6 simple kernel releases later there was a real had India and of that you mean iteration of this talk and I was told that this case exactly and he was in the audience have and that's how we so anyway In the next report by those and any hit parade parade here was making some changes the posits misses Chu idealized I'm not too much the idealized that things like changing and the limits on the on your eyes default values the Augusta city avenues of the new slashed crop interfaces to control the behavior of the API as 1 of the things that he wanted to do was raise the limit on the number of messages that you place in acute from 32 32 K to 64 K now that's a a funny numbers when you think about the use case I just talked about most the time this very few messages in the queue he was raise the limit 64 K in other words the customer was working with 1 put vast numbers of Mitch's under q treat them as due the kind of Don end the he was invested in kernel code the delegates choose residues have priorities that implies misuse has to be sorted and he realizes this sorting algorithm inside the kernel amounted to a bubble sort so he knew the priest soon after he made these changes customer he was going to bug report that hack terribly posits misses choose before the thing is of course for the usual use case bubble sort is fine and that's what the original developers coded for but that the rate had developed concerned fix this problem so this sorting over so I think the 1st take away from the story is known and when you're designing API people in users spicery endlessly invented those falling in a manner of different ways of using your
API and they massively outnumbered every crazy thing it is possible to do an API day will find a way of doing it was someone dozens and even that wasn't
such a crazy use cases just an unexpected use case so that's 1 moral of the story but you might say well was this is such a big deal it was a performance problem it got fixed we're good now we that come about the also turned round broke the API in 2 different places that are a kind of minor breakages so no 1 noticed for a while but I would nevertheless breakages 1 was that on the result show phrase that this was not such a mind of the breakage causing people real pain 1 other changes actually placed a hard limit on the number message choose you criticism of 1 that limit didn't exist before and with the changes nor even superuser could override the limits and so the 3rd party developers work writing applications based on Mr. choose they were having to say to their customers yes you can use up right now but you what this number of Massachusetts you have to rebuild dual kernel which is not a very acceptable solution when you're selling a product if your customer several kernel races later they're finding fixed and then it wasn't those this was a more minor problem but some 1 of the gets deserve a pseudo file system you can use would apply without is miscues that allows you to see the number of dyadic bytes in you and before these changes the correctly reported the number of user space but doubted bias the room the q after these changes included some kernel here it who knows how the calorie it was calculated the point was from the point of view of user space it make this field of no use at all a Dane finally that was fixed out quite recently but many kernel releases later the problem of course is the 1 known unit tastes and it's pretty much guaranteed to be done have unit tests then been surely someone's gonna screw up your API make some refactorings that'll change behavior in subtle ways that may not get discovered for
quite a while so they all this stuff units tests about preventing behavior regressions out and even just making sure that as you go out the door the API works is you advertisers were supposed to work and regressions in the Linux kernel in terms of come use Bayes idealized had actually been surprisingly common and just a couple of examples there so at the end that's 2 . 6 . 12 all up until less time they had been and if control operation called if state on this was a way we could say I wanna monetarist sockets was part of processing on a monster a soccer prep some other kind of files with that so that when the input becomes possible socket for example I get a signal to say and input as possible the ensure Linux 2 . 6 . 12 with this operation we detect all of the signal to be targeted to a specific trade in my process in which 2 . 6 . 12 things got change so that signal was no longer thread directed it was directed to a process that meant that the signal to be delivered to any 3 in the process now no 1 noticed that for quite a while and when someone did eventually squark about and say this actually broke my application this was already several kernel reasons like go like 20 and then we got 20 calories is with the new behavior do we revert to the old behavior for maybe the and new applications that depend on the new behavior but linear program by the change so they had to invent another if control operation the gave us the old behavior the of but at the probably many of you have heard of the I notify API it's a technique for around monitoring file system to see where the files are changed all created or removed or renamed monitoring changes in in in the contents of a file system the I just catch of muscle that only a circuit so there's a there's a flanking UCI I notify API called i in 1 shot it's use when you wanna say that when you want to get just 1 notification from a file from up from a file system object you you and you want to go that 1 notification you don't need more notifications about that objects this is useful for some use cases what I notify also has something called Orion ignored having which are in ignored is away sometimes flounces logics view monitoring disappear on perhaps the file system was unmounted for some for some reason for example when that something happens I know I gives you an ion ignored in saying I'm going to cease more offerings albeit now blind is something you didn't get that convened for a one-shot notification is high you ask for 1 job notification you knew after that it was going to be ignored so that these 2 features and then several kernel releases later when from the if a if a notified what was going on if a notifies another kind of files and some monitoring API when this work was being done those a lot of refactoring of the Coleman code between if a node of and I notified and silently things would change now i in 1 job did generate an iron ignored in the its just another little example of regression that happened because there are no unit tests so we can regressions but also we get things that are going up the ball and they don't even do you what see is all box what's is almost 10 you know something's supposed to the link does it actually work and while I and 1 should it be a one-shot notification released in the final 4 is recent 2 . 6 . 13 give me 1 notification a file system object and then disable monitoring that she didn't work if you just tried it it had no effect if you tried is no I Winchell to modify Monnet monitor a file system object it continuous events where the object was changed the other words there was 0 testing before was released an adventure that was fixed up right after a report noted that and that was when she fixed and 2 . 6 . 16 I don't mean to give I notify a hard time by the way it's it's a useful tool of and it but it's it's such a rich API that presented lot the examples for me and I'll spend a lot of time looking at 1 point so identify suffers for the fact that I got my close attention for a while am but so this leads to get line at a point is the and I know that I have and I and II concept called the coalescing the point is you might monitoring of file system and the file system i has a lot of activity going on your monitoring text the contents of the directory and practices a file name directory that is being updated there's a process that is continually writing to a file in a directory potentially identify can deliver you 1 notification for every right to a file in that directory this may be more than what you watch and 1 of the features that identify has a summer collided uncut Coliseum against where if the new event there's a period is the same as the next preceding having been those to a colonist into 1 the so get a sequence of events that rule saying rather chewing hundreds of Institute if the user of the aggregation bottom hasn't process those events he had been by colicin coalesced into a single and so you don't get as fast long queue of being it's this that came out in 2 . 6 4 1 3 the by the Linux 2 . 6 . 2 force someone noticed that actually the coliseum ambiance was not with what we knew then was not colors for the event at the back of the queue for the event at the front of the queue 0 it's be all as the beam was sorry the newest event was colonized
with the oldest prevent only Q which makes no sense where so that there was very little testing when on their perhaps it was like umm autonomic only you up another make you had the same they cyclists of more examples receive a message received yet receive a message and this is a relatively recent system moments it's a performance optimization that allows you to in a single system call read-multiple diagrams from soccer but a lot of these more recent system called was the role about I optimization receiving messages just another example doubt a system calls like this the block benefit from having a timeout argument and the person who invented for number implemented receive a message I got a review comments that Haiti would be nice if we had a time argument on this system call I suppose but the idea of the timeout was it'll be a timed not on receiving all of the diagram see most better receive a message call reselling it 5 diagrams and you give a time out of let's say 3 seconds and of those 5 diagrams right the 3 seconds you fire diagrams but if less arrived arrive you get a few without a grant to the timeout expires and why it actually works is the time that only get started after each diagram arrives so did you make the call and no diagrams arrive you never timeout of so so that attains cleaning non serious testing the implementation the so all these kind of problems also could have been avoided or I would say would unit tests on tape that is obvious good so why it seems to be pretty obvious so that when you're beer and you can like the Iowa refactoring and existing API found rights and unit tests 1 of the problems with their historical was there was not a good home for unit tests there's been a long-established predictable Linux test project which I does some good work but the problem of the lens his predicts from was historically the test lived out of the kernel tree and they typically got added to the year of the test to be going to that party sometime after kernel a few eyes were released so LTP could sometimes be used to find regressions was seldom would for finding bags in Canada like the eyes before they were released things about a little bit better and in recent times because starting in 2014 is now something called K self test which is in Como unit tests and some people actually write some there isn't even a menace and we debate most importantly there is a queue warm boarding it's a pain in human being that looks after this which makes a huge difference of course if gonna write unit tests you wanna have a specification don't you the for Andrew Morton is the most portable kernel developer I love this quote programming is that not just of telling the computer what to do the telling other permis what you want commuted to do both are important and the latter deserves here to which I read it often which it often does not here it so that's put receive a message a little bit more of the time by the problem miracles was no 1 wrote a specification at what I mean is something like this now another program the details here this is my fantasy of what the person is just the time I was wanting no no never elaborated what should do details so when it came to implementing it's the the decoder developer didn't really and it seems the timeout framework with the kernel and ended up saying something quite a useless but no they need to be some sort of specification like this and that's simply was never created and course when he was specification in about a target for implementers to to work towards and you don't have it specification will happen tell the difference between the intention of implement and what they actually do that difference of course is what we call it by um and we can write unit tests and we can even help people review our IPI it's um so when he put his specification well a good place to start with this kernel commit message and a lot of kernel commits the new API so API changes there is no real explanation of the change not even in the kernel commit message but some kernel developers direction Mr. right good specification and there are some commit message of course the best place for these specifications is in something like a man range so 1 of my arguments and unbiased is that you write good man pages you would specification protesting my bias that has some basis in experience so I'm I'm gone through this process of writing man pages per kernel idealized with was was the main page and then use those man pages as test specifications for the idealized and so for these 2 system call system calls here you timing is safety entirety which is active family of system calls I'm II I wrote or co-wrote some the man pages and then turn around and wrote tests based on the specifications that mom actually I created unfortunately but but by that means I found a bunch of times in both AP on its it but 1 1 of the problems so in general in terms of API design is what I call the
problem of the feedback loops and then the problem goes like this you're kernel about you put a new API into the kernels can available user space uh that will lead the way into the kernel stable release some weeks later and perhaps several months after that delaying the distribution release and it's only the in the people really start using that AP on and so in the worst case your bags in your design failures are running and we found preps 6 months after you do the work of the ritual implementation and by then it's probably too late to fix anything because you've never solid this only fixed I ever the design faults it's probably not possible effects that API without breaking at least some applications that already use that what the things another way what you really want to get is as much feedback as you possibly can before an API is released and then how do you do that what you wanna publicize things is widely in early as possible and so these are some of the things I think that come about because I need to do and things have got a little bit better on this dimension of but is still a lot of work to do yet so if you want a detailed specification somewhere in practice the main page practice some of the documentation somewhere some programs she demonstrate how the API works the let's review is actually see how they hate us 1st work try and run most his pertinent expand them and so on your e-mail as many lists and especially as many relevant people as you possibly can nowadays there's also in our uh a dedicated maillist for people like me and I what other people's room thing like Dimitri who our interested in knowing about kernel I API changes to user space that there's a there's several groups of people who care about API changes over things like the C library projects here this trace produce cares arm and obviously users care as well another go where publicizing API and some kernel about observation down the sort of thing is to write an article for L in because that's a very good way of propagating information your API to a wide unfortunate that last piece is really the exception rather than the rule less the cause you don't do this if you really want to get a lot of feedback when your API when you were from Apache reads when your API into the kernel as fast as possible solve your problem I'm sometimes cynical that this is a strategy let's get the API and those with as little as possible solve my problem and 1 explained too much about how it works because they would be 1 point out faults in the API subsystem maintainer of much of it would do that sort of thing so another thing is really important terms of API design is writing a real
application and and here I'm gonna I stick it to I notified Ian obsess just like a lot of attention on and finds a rich source of examples of what I think idea and I notifies is a good thing it is could have been a bit of thing the I get so the whole idea by the it's about monitoring of file systems funded about changes to files renames reads writes and deletions of files and so on before we had I notify we had an earlier system called the notify which did some of the same thing but in a much poorer way and it was a framework was based on delivering notifications using our Munich's signals which was pretty uncomfortable and more even that's what you reduce to doing was actually holding the file system using the system calls like read the instead which is incredibly CPU-intensive uh and injures generally resource-intensive so I notified did make things better but I kind a contender it could make things it's still in all just show some examples and that the backstory here for me was no food for my book I wrote a chapter on on on on notifiable planets vendor's API and what it does and then sometime later I should try to write of call a real application it wasn't a real application was needed I release the the people would do things useful with but it tried to emulate what a real application might try and do in terms of Moria file system modification did the intention was to monitor a directory subtree and keep vocational application a model of the directory subtree under a certain point in the files so recall what my attention all the directories that were and subregion of the and so on that would more meant maintained under the subtree and the idea of course was that whatever the state of the file system was my application should always perfectly mirror that states realistically monitoring the state of the file system that took me 15 hundred lines of C code which uh and I wasn't even producing anything useful and the like it includes some comments geneset thousand lines of C code a up on LWN seeking gone read the the long version of the story and then I understood that the final price is a good thing but at least she was still a lot of problems to solve and some public think could have been sold by notified and so I can a couple of things that the tricky about identify 1 thing is when you get notifications from fight you get a host of information about the changes to the file 1 thing you don't cable preps 2 things you don't get out the UID and GID of the sorry the UID and the PID of the process that made the change in the file system and sometimes it might be really useful to know who made this change because sometimes it might even be used could Mondrian file-system subtree in replication and your application also does some work inside the file system while your application will end up generating notifications and sometimes you wanna know where those weapons done efficiently you generated all some other application generators there's no way of doing it with without so so something was a unified I give you UID in the PID as part of the notification that's a that's a a an information leak well then may we restrict this just those privilege processes I another sp going to define a doubling recalls of fault actually cause I think it's an inevitable limitation of the API monitoring of a file system directory is not recursive if you Monterey i.e. directory you'll find out about events on a directory and also the immediate descendants of that directory which 1 find out about it means subdirectories that subgroup of that drapery and spend degrees and so on and so what you would do in that case is for at the sub tree for every directory and subdirectory in the subtree you would add another 0 I notify watch this is a relative it's a big free directory subtree this is a relatively time consuming operation so 1 of the aspects of my notify that is minus is it provides a way of getting you good information about file rename the things when but this is you might be moderate Gregory subtree and within a subtree i.e. file gets renamed from 1 of the sub under the tree to another trick of the subtree assuming a more over all the subdirectories then you get a notification to notifications move from notification saying the the file with this directory and it landed in the strict removed from moved to having its but there's a couple of details that make this Spiegel more painful to use that should be the moved to and the move from again on not guaranteed to be consecutive on a multiprocessor system you could get it's rare but it can happen they can get another being from some other file system and advanced in between those 2 I've never seen more than 1 but uh sometimes seen at least 1 and the other thing is that well you if you don't really mean from 1 directory to another directory in within the the set of triggers your logic you'll get the 2 events in the former moved to maybe your moving the file to somewhere else outside of your more tree and that showing it moved from event but there won't be moved to event and you don't know in advance so what you gonna try and do is match these 2 events up to see what I move from within didn't move to another great it was removed to another great real along the bill of more lives to another regular monitoring and of course the 2 events are not contiguous they may not even arrive in the same read buffet led another reason they are notified files have to get even which may not even be there given the reads with timeouts it's inevitably raise the and so you may it's in which means sometimes you by to match the events when you fail to match the events 1 and I think that means is unitary potentially if implemented directory renamed and the direct result was being deleted and then once appear somewhere else because it was a king reader 9 that rate you be recreated in practice the doing recursive moderate yet to recreate all of the watches full of subdirectories that you want to monitor is expensive things would have been so much simpler if the kernel could just guarantee those 2 events like going to be contiguous so this is what I mean you can only get a feel for what the real design problems and requirements are from an API by writing normal trivial applications that really takes the API and of course this should really happened before it's released to the wider world so no good finding these problems later if and if you can't fix the problems at least document and so that other people can point at your and poke fun at you and reject your API on the again
so have a go at the time of attainments true of 10 minutes the sum of on just a few technical things that
I may go this rush through of the I distilled until much about technicalities that you technical best practices those now the become established 1 is the system calls should allow for extensibility this you she means having of either of flags but Moscow argument we can consider that's in the future the say hate another called does something new and you might say this seems fairly obvious but well it wasn't obvious in the past because we had repeatedly this kind of pain where we had the system call without the arguments and in a so without a place on and then we had them in another 1 with the flags arguments and the you probably have heard historically the duke and the due to system calls in the kernel of course not ever duped 3 and and so on and so on and this is just a few of the examples again are an article about this on LWE in this alternative possible where you go structure which is an argument and that structure has some sort of size field associated with and by changing the size of that size field in new iterations of the structure of the new signify some sort of and behavior change in your API this nowadays things to do David Drysdale music playing around this conference and noise of some article talks about a lot of someone my mother not a nice text file and the kernel tree the talks a lot about these points but of course it had this flags arguments being you wanna make sure that all the unused bits as euros because if you don't shake that 0 bits there then if some crazy user parts random but slows arguments then later on when you try and make use of those items in a future version the kernel something that's all applications do strange new things and leanest doesn't say all that applications broken he yells at you for trying to change the API and breaking applications and the being real cases of this where some features that have been added to the kernel or tended to be added have had they either be abandoned or changed because some system calls didn't share their flanks arguments on it turns out you go the kernel source that I'm vast number of the undistorted system calls don't shake the flags items the most famous 1 is the open system call if you the fight I if you specify random it's and then used it's the adjustable just ignores them we had a chance that because fixes similar 2 . 6 . 16 with open but no we just maintain the consists in open behavior instead of checking the flanks while I was sleeping that day and OK of there's another consistent pattern is well known as a Chris system call crude and that creates from Scribner's I'm usually have an hour a a a close links they play a way of creating a follows the but so the closing zinc immediately turned on this is some place I think we'll sure sure means by the way when you craft file descriptor and then you do an exonic in France because by default are preserved for the new programs as a feature but sometimes you don't want that to happen Seatoller closings effect so that when you exist in the program you don't quite trust the files automatically closed but there's certain kinds of race conditions where in a multithreaded program i.e. processes will once read open the file and then tries to save the close I take flag in the window between another 3 dozen volcanic C and the new Bergen gets the files with the close exactly how was calls not as that create files with this at the time you create a file descriptor there's a know a flag summary of poets exist when I create the files have the same the closings sick flake immediately the for rather the other way with us we would sit I think that the selection of order of this is a cost model it's problem this is a problem a design failure in original Unix closing 6 should be in the default behavior in doing new system calls you always do use of a great father had this option so some system calls have timeouts some blocking system calls at timeouts common cases they relative time no options but with relative time that's the catching signals and so on system called it's and restarted time asking create the should always be option for IE an absolute time out as well PRC L if control IOC all these multi plexed system calls I do what I really wanna say about these is you don't do it I I I know the are valid reasons like when this at the device and it's a single use case it kind of makes sense that some people try and sneak no no no monstrously large idealizing as IOC a 1 of the problems with using these multiplexed system calls is that if you decide to expand your your your your new feature later on you might end up multiplexing your multiplexed system call so for instance sake called but with the which this be a few people mess accomplice some conference of sitcom is a feature of the for living system calls an application is allowed to make it's not in the US you name using a slash Proc API that's the ancient history but then it was extended by using um not refers in the IPI is further enabling sitcom was moved to P CTL and then the Edison when the Russell so we actually have some different options for enabling sitcom and and another option prcd this different behavior and then you have to think well if we do that once again twice or 3 times of full-time sort may be reading another system call reason prevails this times and so if you have another system called the so capabilities capabilities of 1 my favorite amusing stories of the problem immediately with capabilities the idea divide the power route into small pieces and the idea then is instead and is right the programs on your system where you you but in a patients got the pallidum everything on the
system if it gets compromised by an attacker that if the product has few capabilities and gets compromised then it's much harder for the attacker to make the program do dangerous things so divide the power of route into small pieces of American developer on adding endangers feature the kernel dangerous userspace feature what capability do I signed to my new feature and you got 2 choices either you add a new capability just feel feature the kernel which you don't usually what do because we don't want enormous number of capabilities for thank you and we find this 1 existing silos 1 of the existing capabilities and that sort of best fits our use case we put on feature into that silence and hopefully each of the different silos is small enough that we divide the power grid into small pieces now the about 1500 places from memory in the kernel where the rock checks yeah does that does the user prices have this capability selected this dangerous operation that's about 1 3rd of those I kept sysadmin In other words if someone's got cancer said in the game's over it's just as good as being routes because the the the this only pathways for thing you can do with cactus said Michael cancer said when the new route again I wrote about that was the title of the article but the there is a there is a path where this problem but no 1 will know but it's it's a lot of work OK I I won't aiming about this but you have to dealing with 64 bit arguments instructor fields you will take care about this just a point of a couple places to read more about that from testing and I can't say enough about test test test my my my model and this is bicycle expense you show your API all show you abide it's actually really surprisingly easy defined by a newcomer idealize after they've been released and you might think well by the fixable and the bind fixing bug fixes Arabie I changes in applications in up in the special case in which kernel which alone is above all that by words you good kernel um OK so something write all down to pull out 1 person did a magnificent job what you leases going I like this like the end it's a cold open files scription locks they fixed a serious problem with traditional posits record locks I won't go into the details but the thing is that everything nearly perfectly the Over past clearly explained the rationale of what he was doing in at great length some publicize sometimes some approach some example programs he wrote this the man he wrote an article in elementary and so here are 2 men is that chair he engaged even with the gene developers and it come about the overloaded of C develops it's even worse they're incredibly unresponsive locks that I wanna be just this way more work than there are people so if you wanna get involved in a product is really important there anymore people of so he had recently that patch many many times and he did debts and even she got then any make all reasonable and if you want get involved in Council about I would say it was that have told to add here is 1 easy path to get involved in kernel development this cantons of reviewing and testing and documenting API as uh this is uh there's a lot of ways to get involved with the kernel there's a lot of low-hanging fruit a lot of design errors that are easily found 1 of bags that are easily found and actually often easily fixed and just take of talked to say something about that so things you can do not make come about as explained what I doing come about the terms are often pretty bad at explaining and if it is like an explain more link you find that interesting things about the API is and often ways to suggest things to be improved document meaning implies is a good way of finding bugs Chris you can like good documentation without understanding the ECU I'm kind of 78 without testing of a classic recent example this only was of a guy called 100 should through and wrote the FA notify page about 20 kernel releases after if a notify was released we found 6 significant by the way do that he wrote patches to fix them all the was really great work so know the it's it's that's a very good wagon and often come about thank you very much you time I'm sorry we're friends so close to the time but is the time for 1 2 questions of variety a FIL thank you would be it I mean time I'm a subsystem intended for a which is more on the device either side and I wrote in in kernel API like for reasons to go out and I think I can handle the relevant people but it was really hard to find relevant people who had time to review surrounding the time the specifications things how optimistic I live in the community of scientists will review on specification if they were created and I think this is a problem sure but I would like to work doing specifications this out by reviewing specifications easier than you so I know there's no perfect solution to this but I would say this is least makes your job a little easier but the problem of insufficient review of and also ladies and gentlemen may I ask you to remain seated it is very difficult to hear the questions and the answers so please remain seated until the focus of media finished thank you very much out any other questions it thank you very much thank
Softwaretest
Schnittstelle
Kernel <Informatik>
Abstimmung <Frequenz>
Bit
Punkt
Prozess <Physik>
Gesetz <Physik>
Quick-Sort
Computeranimation
Eins
Softwarewartung
Arithmetisches Mittel
Rückkopplung
Perspektive
Projektive Ebene
Softwareentwickler
Kernel <Informatik>
Subtraktion
Gewicht <Mathematik>
Ortsoperator
Mathematisierung
Zahlenbereich
Implementierung
Iteration
Element <Mathematik>
EPROM
Raum-Zeit
Socket-Schnittstelle
Code
Kernel <Informatik>
Physikalisches System
Message-Passing
Algorithmus
Inverser Limes
Interprozesskommunikation
Warteschlange
Optimierung
Softwareentwickler
Default
Implementierung
Schnittstelle
Schnelltaste
Kraftfahrzeugmechatroniker
Softwareentwickler
Systemaufruf
Ideal <Mathematik>
Physikalisches System
Bitrate
Binder <Informatik>
Quick-Sort
Programmfehler
Verknüpfungsglied
Rechter Winkel
Residuum
Ruhmasse
Wort <Informatik>
Verkehrsinformation
Message-Passing
Resultante
Kernel <Informatik>
Punkt
Komponententest
Mathematisierung
Zahlenbereich
NP-hartes Problem
Unrundheit
Kartesische Koordinaten
Raum-Zeit
Kernel <Informatik>
Softwaretest
Einheit <Mathematik>
Reelle Zahl
Inverser Limes
Dateiverwaltung
Softwareentwickler
Drei
Sichtenkonzept
Biprodukt
Energiedichte
Datenfeld
Ebene
Ablöseblase
Refactoring
Message-Passing
Kernel <Informatik>
Komponententest
Momentenproblem
Schreiben <Datenverarbeitung>
Richtung
Homepage
Monster-Gruppe
Netzwerktopologie
Prognoseverfahren
Softwaretest
Lineare Regression
Dateiverwaltung
Kontrollstruktur
Gerade
Metropolitan area network
Softwaretest
Gruppe <Mathematik>
Güte der Anpassung
Magnetbandlaufwerk
Stichprobe
Ereignishorizont
Forcing
Rechter Winkel
Lineare Optimierung
Ablöseblase
Socket
Cloud Computing
Folge <Mathematik>
Subtraktion
Mathematisierung
Mathematische Logik
Spannweite <Stochastik>
Thread
Inhalt <Mathematik>
Soundverarbeitung
Binder <Informatik>
Elektronische Publikation
Digitaltechnik
Wort <Informatik>
Kantenfärbung
Bit
Punkt
Prozess <Physik>
Minimierung
Familie <Mathematik>
Kartesische Koordinaten
Computer
Computer
BAYES
Kernel <Informatik>
Metropolitan area network
Einheit <Mathematik>
Prozess <Informatik>
Minimum
Umwandlungsenthalpie
Nichtlinearer Operator
Parametersystem
Systemaufruf
Ideal <Mathematik>
p-Block
Ein-Ausgabe
Frequenz
Ebene
ATM
Autonomic Computing
Projektive Ebene
Refactoring
Verzeichnisdienst
Message-Passing
Aggregatzustand
Existenzaussage
Quader
Zahlenbereich
Implementierung
Term
Abenteuerspiel
Socket-Schnittstelle
Code
Framework <Informatik>
Physikalisches System
Interrupt <Informatik>
Warteschlange
Optimierung
Softwareentwickler
Mobiles Endgerät
Ereignishorizont
Implementierung
Lineare Regression
Zwei
Einfache Genauigkeit
Physikalisches System
Quick-Sort
Objekt <Kategorie>
Energiedichte
Fundamentalsatz der Algebra
Diagramm
Mereologie
Basisvektor
Nichtunterscheidbarkeit
Verkehrsinformation
Resultante
Kernel <Informatik>
Distributionstheorie
Bit
Punkt
Prozess <Physik>
Freeware
Gruppenkeim
Versionsverwaltung
Kartesische Koordinaten
Extrempunkt
Raum-Zeit
Homepage
Kernel <Informatik>
Netzwerktopologie
Regulärer Graph
Datenreplikation
Dateiverwaltung
E-Mail
Gerade
Inklusion <Mathematik>
Umwandlungsenthalpie
Nichtlinearer Operator
Physikalischer Effekt
Machsches Prinzip
Güte der Anpassung
Systemaufruf
Ausnahmebehandlung
Quellcode
Bitrate
Ereignishorizont
Softwarewartung
Diskrete-Elemente-Methode
Menge
Hauptidealring
Strategisches Spiel
Ablöseblase
Projektive Ebene
Information
Programmierumgebung
Verzeichnisdienst
Lesen <Datenverarbeitung>
Aggregatzustand
Rückkopplung
Stabilitätstheorie <Logik>
Mathematisierung
Implementierung
E-Mail
Term
Framework <Informatik>
Code
Leck
Informationsmodellierung
Hauptidealring
Webforum
Reelle Zahl
Programmbibliothek
Inverser Limes
Luenberger-Beobachter
Delisches Problem
Optimierung
Ereignishorizont
Gammafunktion
Dateiverwaltung
Soundverarbeitung
Pell-Gleichung
Elektronische Publikation
Aeroelastizität
Schlussregel
Mailing-Liste
Physikalisches System
Elektronische Publikation
Quick-Sort
Minimalgrad
Rückkopplung
Loop
Mereologie
Kernel <Informatik>
Bit
Prozess <Physik>
Punkt
Gewichtete Summe
Gemeinsamer Speicher
Versionsverwaltung
Iteration
Absoluter Raum
Betrag <Mathematik>
Kartesische Koordinaten
Extrempunkt
Kernel <Informatik>
Netzwerktopologie
Fahne <Mathematik>
Fahne <Mathematik>
Trennschärfe <Statistik>
Gruppe <Mathematik>
Bildschirmfenster
Mustersprache
Randomisierung
Ortszeit
Addition
Default
Parametersystem
Benutzerfreundlichkeit
Systemaufruf
Quellcode
Atomarität <Informatik>
Systemaufruf
Konfiguration <Informatik>
Arithmetisches Mittel
Lemma <Logik>
Datenfeld
Konditionszahl
Cloud Computing
Ordnung <Mathematik>
Instantiierung
Multiplexbetrieb
Mathematisierung
Abgeschlossene Menge
Geräusch
Zahlenbereich
Physikalisches System
Informationsmodellierung
Multiplikation
Maßerweiterung
Datenstruktur
Optimierung
Gammafunktion
Leistung <Physik>
Soundverarbeitung
Relativitätstheorie
Einfache Genauigkeit
Routing
Physikalisches System
Elektronische Publikation
Binder <Informatik>
Quick-Sort
Offenes Kommunikationssystem
Parametersystem
Mereologie
Ruhmasse
Gamecontroller
Bitrate
Offene Menge
Kernel <Informatik>
Bit
Punkt
Kartesische Koordinaten
Computeranimation
Kernel <Informatik>
Homepage
Prozess <Informatik>
Speicherabzug
Rechenschieber
Auswahlaxiom
Metropolitan area network
Umwandlungsenthalpie
Softwaretest
Nichtlinearer Operator
Schnelltaste
Parametersystem
Softwareentwickler
Dicke
Güte der Anpassung
Ideal <Mathematik>
Biprodukt
Arithmetisches Mittel
Diskrete-Elemente-Methode
Datenfeld
Festspeicher
Netz <Graphische Darstellung>
Varietät <Mathematik>
Fehlermeldung
Schnittstelle
Ortsoperator
Mathematisierung
Zahlenbereich
E-Mail
Term
Homepage
Physikalisches System
Datensatz
Informationsmodellierung
Spieltheorie
Optimierung
Softwareentwickler
Gammafunktion
Leistung <Physik>
Elektronische Publikation
Systemverwaltung
Routing
Physikalisches System
Elektronische Publikation
Binder <Informatik>
Grundrechenart
Fokalpunkt
Quick-Sort
Programmfehler
Patch <Software>
Körper <Physik>
Offene Menge
Hypermedia
Leistung <Physik>
Wort <Informatik>

Metadaten

Formale Metadaten

Titel How to design a Linux kernel interface
Alternativer Titel How to design a Linux Kernel API
Serientitel FOSDEM 2016
Teil 77
Anzahl der Teile 110
Autor Kerrisk, Michael
Lizenz CC-Namensnennung 2.0 Belgien:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen.
DOI 10.5446/30992
Herausgeber FOSDEM VZW
Erscheinungsjahr 2016
Sprache Englisch

Inhaltliche Metadaten

Fachgebiet Informatik

Ähnliche Filme

Loading...