 Hi, everyone. It's Jeff Chao. And again, this is the first of a couple screencasts I'll do for assignment one. So assignment one, you know, at this point, you should have everything set up from assignment zero. So we're not going to do any of that. I will, however, sort of walk through a little bit of the setup you need to do for this particular assignment. So I'm inside my virtual machine here. Notice that this is set up a little bit differently than yours might be. This is a virtual machine that we're using to do some development for the class. So you'll see that it has some solution sets and some other things in here that that you don't have. But I have my the sources that we've given you guys in base. So as usual, when you're starting an assignment, what you want to do is is configure that assignment for your configured kernel for that assignment. So if you go, if you look here, I'll go into here and run my kernel. And you'll see the test menu that I have a couple of the tests that you need for assignment one, that includes the lock tests and the two CV tests. So these are a couple of the tests here, SY2, SY3, SY4, and SY5. Now, SY2, SY3, and SY4 are tests that we gave you that will not pass until you finish this. As you can see, those two fail. And of course, they look that looks terrible. SY4 should also fail. Yep. SY5, on the other hand, is not implemented yet. This is a test that you get to write for this assignment. We may add tests. Actually, I think that we're going to add an SY6 to the assignment at some point and we'll tell you about that if you don't already have it. So at this point, this is kind of the state of your kernel. However, you will notice that you don't see any of the synchronization problems. And that's because these are tests that we enable only for this assignment. So to do that, what we need to do is go into our current configuration directory. So in the root configuration file, you'll see down here at the bottom, this is the syntax of this file. So the file defines a bunch of files that get included in your kernel by default. So this syntax here indicates that all these files are always part of your kernel build. However, you can also have files enabled by setting an option. So this stands here, defines an option called syncprobs. And then defines that these files, whale mating, stoplight, and the synchronization problem test drivers should only be included as part of your kernel build if that option is set. And if you look at the default DOM VM configuration, you can see that option is not set. So in order to enable those options, and the menu flags that come along with them, so I'll show you in the menu code, the name of the tests are sp1 and sp2. So when I enable the syncprobs, it also includes a header file that defines this preprocessor variable. So these are only included when this is set. Okay, so let's turn that on. I'll go back into my configuration directory. I think I just did that. Nope. Okay, here we go. So I'm going to uncommit this. I'm going to reconfigure my kernel using the same configuration. I'll go back in here. I need to rerun bmake-depend. I have a little script that I'll use to do this. So this is a script that cleans, runs bmake-depend, and then does build in parallel. Just takes a minute. Okay, so I installed into root base. Now if I go back here, run my kernel again, you'll see that the whale mating and stoplight tests have appeared on the menu. So that's good. And these tests don't do anything, though, by default. So if you look, they don't even print fail because these tests require additional features that you haven't yet implemented. So, okay. So now that we're done with that, our kernel is sort of ready for assignment one. The next step is to actually start looking at some code, and I'll record the next screencast good to start with that.