So, I'll discuss, I'll do the first part and I'll talk about the new Geolipsy condition variable. There were process requirements or clarifications about process requirements that required us to build a new algorithm. I'll talk about how blocking with few taxes makes this complicated and I'll give a brief overview of the algorithm. So this will be a bird's-eye view and the things that there are lots of details and there are more details than we have time for, but I guess our goal is that you get a bit more aware of the problem and we maybe get to discuss this a little bit and we certainly won't solve it today, but I think it's good to have the conversation and, sorry. And Darren then will do the second part, talking about the actual problem for how to support PI with the new condition variable. So quick reminder of what the condition variable is. So it's a way to wait for a certain condition to hold. So you have a thread that does the waiting. So and it grabs a lock and then while the condition does not hold, it calls this conduit operation, p-thread conduit. And this one, atomically, so specify to atomically release the mutex and start waiting. And it returns only after reacquiring the mutex. The signaling site then optionally and that's a good practice acquires the lock, sets the condition to true and signals. We have this while loop there because the condition variable is allowed to, so this p-thread conduit is allowed to wake up spuriously. So that's the thing that we want to implement. Now, right, the problematic thing though is that the condition variable is not a counter. It's not like a semaphore or a lock, right, which either has tokens in it and a semaphore or not, which is acquired or is not. The condition variable is essentially an order of events. And this is what POSIX clarified and this is also what C++14 specifies in terms of requirements on condition variables. So the requirement there is that the signals, they must wake threads or one of the waiters that started before them. And the reason is that a program can observe or construct an ordering of waiters and signals. And this is because the mutex is released atomically with starting to wait. And the counter implementation on the algorithm, the synchronization that we do, then must adhere to any ordering that the program may have observed. So if you look at the small figure down here below, right, if this is a sequence of an ordering of events that the program could have observed, right, it means that this signal here must wait exactly one of those two waiters, sorry. It must not wait the second waiter. The last signal, S2, is allowed to wake W1 to W3. That's not a problem. And you see that this is here the ordering that I'm talking about. I'll give that a try. S1 can wake W1 and 2, S2 can wake all of them. There you go. So the errors are the ordering requirements or they determine the eligibility, right. So in this case, for signal as 1, waiter 1 and waiter 2 are eligible to wake up. And so the counter synchronization must model an order of waiters and signalers. And so as I already mentioned, there's the set of eligible waiters that it has to adhere to. And only those are allowed to consume a signal. And the problem with the previous condition variable implementation was that we could violate that. You know, not with two waiters maybe, but with three waiters there was a problem and we actually got bug reports from users and so on and so forth. So what then we do? So I then went to the Orson group and to ISOC++, asked them what they think. They clearly said they want these semantics and they want this ordering to preserve. So I built a new condition variable algorithm. The first attempt that I tried didn't actually work. And now I have a second one that I think works and that is now currently under testing and review. So how do we actually do that, right? So let's start simple and say that, okay, we don't do any kind of kernel level blocking at all. We just do spin waiting. And in that case, it's rather simple to do. Because then we can just say the ordering that we saw down at the bottom. This is just a sequence, right? So we ignore all the partial order thing and say it's a total order and it's a sequence. And then the eligibility for wake up is determined just through a sequence of waiters. So which we call Wsick, which can be as simple as a shared counter. And waiters in the condition pthread-condwait implementation basically do three steps. So the first is that they look at any kind of sequence thing and ordering that the program might have observed. So here in our example, they acquire a precision in Wsick, for example, by incrementing the counter, right? And then they become eligible for signals that happen afterwards, right? Signals can also observe this counter and the sequencing. For example, right? Then they release the mutex, right? And then they actually start spinning. We'll see later that one problem here is that the order that we observe in step one doesn't necessarily match the order that we have for calls to few takes of eight, for example. That creates these all kind of interesting problems here. But with the spinning, it's not a problem, right? Because we're always spinning and we can just stick to our order that we determined in step one. So what signals then do is that if the number of signals sent, so S sent, is larger or equal to the number of waiters that we had so far, then they just don't need to do anything because there's no waiter. Otherwise, they just increment the number of signals sent. And then one of the waiters, spin waiting on S sent, will just see that it's turn and it will go, right? So this is similar to a ticket lock. But the immediate few takes falls? So do you want to have the... The block will do a few takes wait immediately without spinning. And the signal is a few takes wake. Because the furious wakeups were allowed, a wake will never wake something that is not waiting, therefore your ordering is preserved. If you do not do the spinning, it doesn't change anything. You can be preempted right before you do the comparison of the few takes word against the value that is expected in the few takes wait call. So it doesn't change a thing. You never change the value for the conveyor. If you do the few takes wait call, the kernel will eventually load the value, the current value of the few takes word and compare it against the expected value, which should always be true. Otherwise, we don't go to sleep. Right. But this is the problem. This is like spinning. And I'll show you in the next slides why there's a problem there.  Let me ask in two slides more, okay, if it becomes clear, not clear enough. So what the spinning does is resulting in a simple 50 wake up. Okay, so far so good. And timeouts and cancellation, which adds more fun to all of this, we can model like sending artificial signals, right? So that's, we can deal with that. Now, the first attempt at using few takes is, instead of spin waiting, we want to call few takes wait eventually with a send as few takes word, right? So if there are not enough signals sent for us, we want to sleep. The problem, however, is as I mentioned previously that the wake up order and so for the few takes does not necessarily match the order that we determined when we set the data sequence and acquired our position in the sequencing of waiters. So step one and step three on this slide here in the middle, right? Step one, the order is not the same as step three, the order necessarily, because we can be preempted in the middle and so on and so forth. So the reason is for that that we do the few takes wait after releasing the mutex, right? Which we have to, obviously, because we need to allow for others to make progress, right? Before we actually block everyone out. And the few takes system itself provide no wake up ordering guarantees in the non-PI case, at least according to the specification. And in the PI case, we don't have a means to tell the few takes wake us up in this particular order, right? There could be, for example, their wake and end priority order and things like that. Which is A, good semantics, not sufficient for what we need to do here. And we don't want to wake all the threats blocked in the few takes wait, because that would obviously be bad for performance. And every P threat consignal would be a P threat broadcast. And we don't need a condition variable for that. We can do anything else that is better. Now one possible workaround is that we could be clever and say, okay, eligibility for wake up can also be argued when a few takes wait actually happens before a few takes wake, right? Because then clearly parts of the wait were before the signal. So far so good. What can happen though then is that waiters wake up if ascent is larger than their position in the waiter sequence. So this is the spin waiting site, which could also happen through the comparison on the few takes wait. And they also wake up if few takes wait returns zero. So as in any other situation where a few takes wake really woke it up. Does this work, right? Does anybody have a question? Or in the interest of time, it can already tell you that it does not work, obviously. So the first bug is that the difference between the number of waiters that we have and the number of signals we sent in this case can be smaller than the number of waiters that are actually blocked. So the program can count with accurate knowledge and so on how many waiters are actually still blocked on the condition variable. And it can legally and correctly only send that many signals to wake up the remaining ones. Now if two waiters wake because of one consignal call, so one through actually observing the shared memory value of signal sent and the other through the few takes wait, then ascent is not incremented by two but by one. So in the end ascent is too small and we can get less wakeups. Now if you think about workarounds, right? Can waiters actually increment ascent if the few takes wait returns zero? Well, they can but then the problem is that the consignal check that we have to not have unnecessary calls to few takes wake and to actually incrementing signals will hit early, right? And so one of them might not run, which also means that we have one few takes wake call missing. And so we have, you know, if we try to work around one of the things, we have another created a problem elsewhere. Maybe we are able to count these events and try to find a workaround. However, any kind of workarounds and I looked at this for a couple of days was really bad and it was really hard for performance. There were a lot of them. And I'm not counting the time that I spent before on that. So they will have result in spurious convo wakeups, so bad performance and it gets even worse than that. And this is that we can't distinguish spurious few takes wakeups from non-spurious ones. Now you always say, well, the few takes implementation, the kernel doesn't wake up spuriously and you would be right. The problem, however, is a combination of POSIX and C++ requirements for when you can destroy mutexes and condition variables and combining that with the general few takes design. So POSIX requires that mutexes can be destroyed as soon as no thread is blocked anymore on the mutex, same for condition variables and barriers and so on. The general few takes design in return means that we have a user space fast path and this fast path and the actual few takes operations in the kernel are not one atomic step. So they can happen at different times. Now, because of this end memory use, we can get spurious few takes wakeups in practice. So what happens is that thread one, for example, releases a mutex in user space then gets suspended, right? So before it can do the few takes wake call. Then thread two acquires the mutex in user space, destroys it and reuses the memory for another few takes. Then thread one gets resumed again, calls few takes wake and this few takes wake hits a different unrelated few takes variable. It happens to be at the same address, but it's not the same thing. Then we get in practice a spurious few takes wakeup. Which is not a problem for all the mutex implementations and so on that we have. Because the way the synchronization problem is on an abstract level is that they can, they can, they are, it's harmless, right? But for the condition variable in particular and the first attempt that we had, it's a problem. Because if we can't distinguish between the spurious and the non-spurious one, we're back to having the first problem. But it's even worse because we don't even have any kind of, we don't know where the consignal happened or not, okay? The call mate was allowed to wake scourish and it's just never crime. Yeah, we can wake all of them and then we're back to really awful performance. And if we're in a bad place here because we cannot decide what was it. We have the error on the conservative side. And then we actually, we wake everybody else. And it's not nice. So. Question? Yeah. Perhaps I'm missing something big, but can, can, can, can you do this? Sorry. Okay, so I'm perhaps I'm missing something, but can you implement a FIFO queue in user space that would keep track? So every waiter that gets pushed on to wait, basically link itself into this queue and the wake up actually the queue and wake one. So you could do an atomic exchange to enqueue a waiter. Then you'd have your ordering and all would be fine. I'm just saying a piece of process shared condition variables. So POSIX allows for condition variables, mutex and so on to operate in a process shared where you just map the variable, but you don't have any extra space that you could use. In the process private case, yes. The process private case is different because we can build our own wait queues and we can do stuff, right? But a process shared case, there's nothing really we can do. So, the second attempt, and this is what I have currently in my patch. It's quite a bit more complex than the first algorithm, but it avoids some of the problems. So the basic idea here is that you maintain groups of eligible and non-eligible waiters. Each with their own few text words. And new waiters always start in a non-eligible group, right? So which is, we're limiting this to two groups right now, so this is group G2. In contrast, the eligible group contains only eligible waiters. And each signal always wakes some thread in G1. I'm stressing that it's some thread because they're all eligible. So you can wake any of them. Which means that from a synchronization perspective, we're back to having something like a counter, right? You can say, okay, is there a signal? And you just say yes, I'll grab it, right? And this avoids the problem with the ordering because through the groups we build and represent this partial ordering that we have. And then when group one is completely signaled, group two becomes the new G1, the new group one. And I have tried to use it the pointer for now. So in this part here, first step, we have just two waiters. This might be the initial state and we start with one group two, all right? So then subsequently, our signal comes along, signal one. And it sees that there's no other group G1. So it makes group G2 into group G1 and signals some of them, right? Then next example, so how does it play out? We have a new waiter coming in, W3, and a new signal. The new waiter sees that the group one isn't yet completely signaled. So it always just starts in the group G2. Here it's a new one. And the signal S2 that comes along, where's my mouse pointer, this one. Also sees that G1 is not completely signaled. So it just sends the signal to G1 and then makes it completely signaled. And then last step in this example is that eventually when G1, when all the waiters in G1 have confirmed that they have woken up, we can make G2 the new G1. And then the third signal can then wait the third waiter. So that's the really high level perspective on the algorithm. I don't want to get into the details in this. You can ask me later and I can walk you through all of that. The important part here for us and also for parity inheritance is that the groups G1 and G2 are roles mapped to two groups. Sorry, we started sentence again. They are virtual groups, right? They are roles and they are mapped to two fixed group slots in the pthread-conti data structure. There's no space in pthread-conti for more than two groups and it's already tight. So what it means is that we need to reuse the memory. So the convert keeps track of which slot has which role and it always has G1 for waiters to enter. And it also maintains the waiter sequence. So the waiters can detect aliasing of groups, but they can only do when you actually look at shared memory. And they cannot do it inside of the futex-weight operations. So reusing a G1 as G2 requires quiescing this particular group to be able to avoid an ABA in the futex-weight. So in ABA situation, in case some of you are unaware of it, there is a name for something that you often find in synchronization problems is where you have values representing states, right? And you say, okay, you see a value of A and you think it's state X, right? And then you have a value of B, something else changes and then somebody else again sees a value of A. But this value of A doesn't need to represent the old state. It can represent the new state. This is what we call an ABA problem. For example, in a concurrent linked list, if you remove nodes, you might see the same pointer, but it actually might be a different node in the list after memory use and so on. The ABA in this problem is that you see a number of signals. And one signal, one value that you see, for example, for there are no signals available in this group, is the same value that you see if it's actually a reused group, right? So we need to quiesce. No. So I mean, this, because we have the counters and because we reduced it to a countering problem, the spirit of wakeups are not a problem for when you just need to count, right? When you actually need to find out is it non-serial, the number of signals that you have available. So we need to avoid this ABA problem, so we need to quiesce future wake calls, which means that we need confirmation from all the waiters in the group that if they signal that they start it or are about to start a few takes wake call, that they're not going to do it or that they have finished it. This is important later on and we'll discuss this later on. The good thing is though that the, for example, the switch from group two to group one is simple, right? We don't need to change the few takes words. So it's not as inefficient as the complexity might sound. And the quiescence is also something that we can do in user space and so on and so forth. So ignoring PI, I'm pretty happy about this algorithm. And now Darren will continue with how it looks to consider PI. So for any of you that are still following along, we're going to fix that now. Okay. So just for a quick recap, when we talk about an unbounded priority inversion, we're looking at this red line here taking an unknown amount of time preventing the higher priority task from running. And this is intended to show a single CPU executing three tasks in time. And the general idea is just you have a low priority task running. It gets preempted by a high priority task. The high priority task ends up going to sleep because it needs a resource that the low priority task has. So that's why you see the blue task stop and the green task pick up again. But then while the green task is running with that resource held, the medium priority task is scheduled. And because there's no dependency on that resource, the medium priority task can run unchecked. And the high priority task is therefore interrupted by a medium priority task until such time as the medium priority task relinquishes the CPU. And then the low priority task can complete, release the resource, and then the high priority task can run. What priority inheritance is intended to do is to shorten that red period because it will in turn boost the priority of the low priority task, which will then preempt the medium priority task and make that a minimal. Okay, that was just sort of required background. Okay, with few texas, with few texas and priority inheritance, we had two goals. I say had because this was in 2009 when we went to attack priority inheritance in few texas with con bars initially. So the way a signal would work is on the left. When a signal would happen, we'd wake a single task and then it would lock and take the mutex in user space. The problem was that, one of the problems, was that we wanted to be able to avoid a thundering herd where because we couldn't re-queue directly to a priority inheritance mutex, which has an RT mutex as its back end inside the kernel, is we would have to wake every single task that was blocked and so we'd have to wake them all up and then they would all contend and then the rest of them would go back to sleep. So that led to a lot of unnecessary wakeups and then going back to sleep. We also wanted to make sure, though, that we woke up the highest priority eligible waiter. And I say eligible to refer back to Torvald's representation of eligible being everything behind the observed order in the application. So everything behind S1 when S1 is issued. Implementation restriction. So I mentioned that we had to wake everything instead of just waking one. And one of the reasons for that is that in order to queue to an RT mutex, RT mutexes cannot be in a state where they do not have an owner, but that they have waiters because if you're in that state then you have waiters that need to get boosted to the priority of the owner, but you have no owner. So that's an invalid state which we had to avoid. So what we implemented was the gray box represents the kernel. So what we implemented was a, if this cuts out, is that the battery? I don't know. Inside the kernel we allowed us to re-queue from a normal few-tex to a few-tex with a RT mutex backing it. And we would do that inside of the kernel and as we woke we would take ownership of that mutex. And what that meant is we never left the RT mutex in a state with waiters and no owner. However, this imposes a couple of challenges. One is that PI few-texes enforce a policy on the few-tex word. So the few-tex word cannot be used for anything else because it is used to encode the tid of the owner and whether or not there are waiters. And so that's how we reflect that state within the kernel to user space. So we, in terms of considerations for this problem, we wanted to note that we are only concerned about the unbounded priority inversion with respect to the target mutex for the condition variable as well as any of the locks associated with the locking mechanism itself. One of the nice things about Torvald's new implementation is it eliminates the previously there was an internal data lock to the con bar. And so half of what the G-Lib C modifications that we made originally did was they would take that internal data lock and if through a non-POSIX modification we were able to determine that we wanted to later re-queue to a PI mutex we would change that internal data lock to a PI aware lock. Otherwise we had a secondary priority inversion risk. But he eliminated that internal data lock. So that eliminates half of the G-Lib C changes we needed to make. So that's nice. But we're still faced with the problem of the value encoding in the Futex. The other concern is this makes a lot of sense for FIFO and RR. But as we go to moving to using SCED deadline more it's a little less obvious. So even for FIFO it's not ideal because in its previous slides the S2 would only wake W2 because W3 was not yet eligible to wake whereas W3 might be the highest priority one and it is eligible to wake, strictly speaking, at S2. Let's go back to this slide so we're all talking about the same thing. There's a simpler one. The group one. So at S2 the only possible wake-up is W2 in his scheme. Even though W3 might be the highest priority one and that's the one you want to wake. You're correct. But it can't. Not with that scheme. Not in this scheme. So sequence-wise it is allowed to wake. It's semantically correct. And we want to wake according to PI rules. This scheme does not permit us doing so. Noted. Let's see. I think lastly, well, let's see. Torvald, I think I'll move this to... You should probably come up for this part. So this is what I touched briefly on before. The problem with the quiescence is that we need to avoid the ABA. And so the threats that Ren futex wake or are about to try to use a futex wake, they need to confirm once they are finished doing that. So because when they confirm that they are all not going to do that, they...  So when they confirm that they are not doing that, right, we can reuse the memory because only then we have avoided the ABA because there's nobody in the first A thinking anymore, right? So the first A of the ABA, right? And so we would need to boost priority of threats, but they have not acquired a lock, right? They are just there. And we can have something like a help of futex per threat or another wake queue because of the process shared converse. Now, when we are saying that, for example, in the real-time case, process shared doesn't matter, maybe that's our solution there that we can actually need to build user space wake queues. Might be the easiest thing to do, perhaps. Or at least an approach. One futex operation that, atomically from user space perspective, one locks one futex and goes wait on another. Would that help? So that would be your three steps all wrapped up in one. So you're saying that... So you're thinking about releasing the programs in futex and waiting on the other one? Yeah, the problem is that everything in between is not. What could help is if we have something like increment the reference count and go sleep on a futex or something like that. So the sequencing that we do before the mutex releases is one thing, right? The other thing, what I just mentioned, though, is that we need to know whether they are pending futex weights and having kernel support for figuring out whether they are pending futex weights without running into this problem here with that we cannot boost something for which we don't have a handle. That might help. But if the futex Cisco would unlock and wait atomically, then you already have your correct order for a futex wake. Because if the futex wake will observe anybody in the futex hash bucket, it must have happened before. That's true. So if we then do everything inside the kernel, that's true. But do we want to do that? I don't know. I'm just saying this. But for the PI cases, the performance is less of an issue than the functional correctness. 40 PI cases might be true, yeah. Though I think what just quickly stepping to this direction, because it's related, a question that we perhaps really need to ask is, do you really want to have a conditional variable? We just discussed briefly the case where the different, the ordering constraints for the conditional variable specifications say one thing and priority says another thing, or FIFO says another thing. So maybe we need to think hard about saying, what actually do you need? Do you really need something perhaps more like a semaphore or like a latch or something like that? So POSIX only requires to wake waiters that happened before the signal, which is I think a sensible thing. We further require that we not only wake any one waiter, but the waiter with the highest priority as seen by the scheduler function, which is not something user space can determine even if it wanted to. So I don't see POSIX being ill specified here, but the solution you crafted for the confar is sufficient for POSIX, but insufficient for the PI case, because as I previously said, the S2 wake up should also consider W3 and not only W2. And I'm not saying that the specifications are incorrect or poorly chosen. I think I agree with POSIX. That makes sense, that constraint. It's just that implementing it is slightly awkward, maybe. The problem with what you just mentioned is that you cannot easily implement this. This one. The problem why I'm crunching S2 into Group 1 is that if you don't do that, the state, the memory that you need to actually cover everything that you're allowed to do just is too large, right? Well, yeah, but that's the problem. So that's why I'm thinking if the Futex Ops could help you here by doing the unlock and wait, automatically, but that again reduces to always doing the system calls, which is something that might not be desirable in the generic case. I mean, Darren is right. Maybe we need to do something different entirely for PI. But I really want to encourage you to think about what I had here, even though I already said it once. So yes, the requirement that POSIX makes is a sensible one, and I think it's useful for many things, but maybe you don't actually need it, right? In a lot of cases, a semaphore is just as good. And maybe for the... I don't know what you are using condition variables in the real-time setting for. So somebody is making a request for that. This person or these people probably should think about, you know, can we do something else that might get back to me? I can tell you who came up with the request first. The Java people. Okay, so I know what you're asking. And they are doing something totally scary. They call it real-time Java. Okay, here you are. Stop wondering. So, you know, maybe we don't need to solve the hard problem if the simpler problem is easier. Right, but with this... Is there a simple solution for getting rid of Java? But with respect to Java, I believe the convars were a requirement for the implementation of their monitor. And they are certainly open to alternatives to that. I mean, they've been doing all kinds of weird things for the monitor for a while. They had the scheduled issue for a long time. And so this was a way that they... But convars are also widely used for all kinds of nonsense. Yes, and that's the other point. Outside of Java, it is heavily used in general-purpose programming. And one of the advantages of using a real-time Linux kernel is the ability to reuse pre-existing software. But it shouldn't need PI. But the period between the weight and the signal should be bound somehow. Also, because if it's unbound, you get, again, unbounded behavior and all your determinism is out the window. It's perfectly deterministic. If you don't call a signal, it's not going to wake. Yeah, very good. That's the same. If you don't get an interrupt from the audio device, you're not going to wake. So this should basically only be used for external stuff, where you're not waiting on software, and there is no owner, so there's nothing to boost. So convars in a real-time and PI scenario are indeed a very dangerous construct. But there are valid use cases, but it's very, very tricky. Yes. One use case I know about is that's where people come up with replacement functions for things found in other operating systems with keys to exist or about the keys to exist. So OS9 had a very similar construct. It's called kind of events in the space. So you can one-to-one replace it by convars. And that's unfortunately what people used to use for 20 years out there. And they just expect it to work. If it's the best solution, certainly not. But, are we going to educate all the people out there? But for example, if it's events, then maybe a semaphore is as efficient. So the reason that convars... We tried to implement a semaphore, and it didn't work. So maybe we should talk offline. It has very similar semantics than what the convars have. Okay. Unfortunately. Because the interesting thing about the convars is that they're special on that day. You can actually detect when somebody started waiting. Which you can't for anything else, like barriers or semaphores or something like that. And that makes it special here. If we hadn't had this property, then it would be much easier synchronization voice. And the other problem is we can't call the evils back. I mean, it's out there. But the evils don't have PI support for the convars currently. So there's incentive to change. They patched chilipsie. Yes, for seven years. But so they have a broken condition variable because it's the old one. But the printing presses work. It's working. Kind of. Okay. Any other questions, comments? Great ideas. And on positive semantics, you don't have it. So you should not use them. If you're not using the patched version, are you using the patched version? No. If you're not using the patched version of chilipsie, you should not be using convars with the PI mutex because the internal convar lock is not PI aware. And so you can just hit unbounded priority immersion on that alone. Regardless of the first half of the presentation, the convar implementation is broken. Any other questions? It's more a question for today before you can find a solution because if I see the bug tracker, it's about six years now. Seven. Okay. So practically, if we want to use convar, we should better use the patch version. If you're going to use convars today, you should use the patched version, but understand that you will have the partial ordering issue where we might wake W3 when we should only wake W1 or 2. That's the issue today. It's a trade-off. Yeah. It is a bit of a subtlety, whereas if you... The problem with what we had originally was you would use a PI mutex and intuitively expect that you would be getting priority inheritance. You would intuitively expect that you get priority inheritance, but the internal lock would mean that you could actually not get it and you could suffer from the inversion. And it would be difficult to debug because it's a G-Lib Z internal which you never really see. Yeah. You've said a couple of times that semaphores could be... It's better to use semaphores instead of conditional variables. Could you please kind of... We're out of water. Let's suppose I have a simple problem, like a queue and other thread put events in queue to wake up and start to process stuff. How semaphore is better? So you could... What I'd try to say specifically is that we could potentially, I think, implement PI support easier for semaphore than for the conditional variable. We don't have PI support or something like that for semaphores right now. So currently it's the same for me. I've seen this priority inversion. It happens to me. So no use for me for switching to anything else at the moment. Did you use semaphores or the conditional variables? No, just conditional variables. So the semaphores, especially the new ones that I have, they work a little differently. So I would have to look a bit more closely whether you might be less likely to run into a priority inversion problem. So the semaphores don't use an internal lock or something like that. If you run up and whoever grabs the token first wins. Of course, this can be still kind of unfair, for example, if low priority threats are running. What I'd really try to say is that the semaphore might be easy to... For the semaphore, we might have an easier time giving you PI support. And I think for the key example you mentioned, the semaphore, if you really need to wait for just something being available to consume, then it sounds like a semaphore to me. Okay, thank you very much. I think I'll Google more from it. We should discuss offline. It's just too complicated to do it, you know, off-hand. I spotted this interesting 64-bit Feutex operation thing. I mean, it has been discussed in the past. Linus shot it down back then. But he most... The main reason why he shot it down was because Ulrich wasn't able to explain it proper. That's true. I read the email conversation. And I think, if I may interrupt you here, I think the problem is that it's going back to Feutex and stuff like that. There are flags, essentially, if you look at it, right? They're either acquired or not acquired. Or, you know, do I have tokens on a semaphore available or not? This year is a sequence. Right. And that's different, right? And you can argue whether 32-bit are sufficient to avoid an ABA. But, you know, it's hard telling a customer that you shouldn't wait three months and have something suspended or not running for two months. Then you get this ABA and you get this and that. And we definitely can't do PIN sequences in 32-bit. That doesn't work at all. That's true as well. I have the 64-bit Feutexes in there because then we reliably and practice could version our Feutexes so that we can avoid all kinds of ABA. And it also would make it easier in some cases to use Feutex words for something that are pointers if we wouldn't need that. Okay, but I mean, I'm not totally opposed, but what frightens me is that we might have to replicate the whole Feutex code once more. Which... No. So... It's just one possible approach. There are others. Maybe we really need to do more of weight queues, build more weight queues in Union Space or something like that. So do something closer to what Java has done with Park and Un Park. Okay, so, I mean, if you come up with something which just uses this, has some special functionality for using that 64-bit variant for some special simple operation, then we can certainly do it. I think one of the issues though, too, is even if we did do the 64-bit, we still not have solved the PI problem because we'd be back to the 32-bit problem but with PI because the other 32-bits are the TID and the waiters. Yeah, but you could argue that, okay, the 32-bit on PI is sufficient enough. But in any case, I would rather do a custom, one custom Feutex op, than all of the ops again in 64-bit. No, no, no. I mean, that only makes sense if we can come up with something which requires that 64-bit thing for a particular operation and the rest of the operation still operate on 32. So for the normal stuff, it certainly would be sufficient. We probably also don't need the special ops that we have right now, like maybe RQ or the PI stuff for 64-bit. We might be, depending on what kind of requirements we actually put in terms of PI and on the Convore to be able to solve it 64-bit, because if we assume that the incoming signal always has high enough priority, then all the signal needs to do is RQ onto a PI mutex that is the program-supplied PI mutex. And then if we have the problem solved for the versioning, then we don't need to do the quiescent stuff. So it may solve it if we have something like a 64-bit RQ or something, just thinking out loud. So maybe there would be an option. You picked the most complex call. I said a simple one. No, but as Peter said, I mean, if we can help with something doing atomic wake-weight switchover, that would be rather simple. Unlockweight. What? Unlockweight. Unlockweight. Wake... Wakeweight. Unlockweight, yeah. The other problem that causes the spurious wake-ups is that with their mutex implementation, they do not know if there are waiters, so they always have to issue the feutex system call unconditionally, which is not good for performance, because then you waste a hundred or a lot of cycles doing a no-opsistical and in the worst case, cause these spurious wake-ups. I respect the lock and unlock of why one proposed aren't that weird either. Right, though, I think that I'm not quite sure I understood you correctly, but for the current implementation I have we already try to avoid the feutex wakes as much as possible. I still have a few cases where I need to implement it, but we do the usual stuff with, you know, having a bid for whether there are waiters that. Yeah, I know, but there's these edge conditions and it makes it rather more complex than it needs to be. It's a little complex, yeah. 64-bit for some thing and we have to come up with a proper explanation why we really need it and why it helps you. I guess we can I'm not a post and I guess we can get it past Linus as well if we come up with something sensible and not just I want to have it because I'm Ulrich. The previous explanation that I saw wasn't convincing. He probably had his reasons, but it probably wouldn't have been convinced of anything else. Okay, so any other questions on that future step or any other questions at all? Thank you both for coming here and preparing that.


The European Union creates its own problems with the foreign trade relations with Africa and other countries. Overfishing the seas of Africa as well as unfair trade relations with the African continent forced people to cross the Mediterranean Sea and many of them die unnecessarily. Democracy in Europe, Democratina Europa advocates fair and just trade relations with the African continent and wants to stop the mass drowning of people in the Mediterranean Sea.


Welcome to the Hindu news analysis by Shankar Ayes academy. Displayed are the list of news articles selected for today's analysis and their page numbers in Chennai, Delhi, Bengaluru and Thiruvananthapuram editions of the newspaper. The link for the handwritten notes and the time stamping of the news articles are provided in the description box and for the benefit of mobile phone viewers the time stamping is also provided in the comment section. Now let us move on to the first news article. This article is a lead editorial article about the wishes of the author how the 5 trillion dollar economy should look like. Now this article will be relevant in prelim syllabus under current events of national importance and in economic and social development. In main syllabus this article can be linked to issues relating to health and education in GS paper 2 and it is also relevant under GS paper 3 in Indian economy. Now we know that recently at the meeting of governing council of Nithya Yog the prime minister has announced a target of achieving 5 trillion dollar economy for India by the year 2024. This we have seen on 16 June news analysis along with other matters that were discussed in the meeting of the governing council of Nithya Yog. The author says that such a dream or such a big plan is necessary for achieving transformation because transformation does not come from modest or ordinary plans. This target of achieving 5 trillion US dollar economy is called by the author as a big move forward. For this the author has used the words the quantum leap. See economic policies has to be made based on ground reality. Now this means we require official statistics to reflect the ground reality because it is based on these official statistics the economic policies are made. Therefore the author states that the prime minister has to put in place India's official statistics that is those departments that perform these official statistics on a firmer footing. Now in the first paragraph the author talks about ending a particular task that just having official statistics on firmer footing will not actually end the task. By the term task the author means something in this editorial that we will be discussing in this article. Now this task can be understood by asking one question that is what would we like to see in the proposed 5 trillion dollar economy that is what are the things we want to be there in a 5 trillion dollar economy. The author says that achieving 5 trillion dollar economy is not an easy job and it requires design funding and governance. Next the author talks about the importance of investment in achieving this dream. According to this author the Make in India program is a failure. This Make in India program which was technically applicable to every sector but clearly focused on manufacturing sector and this article says that the program the Make in India program played out as a dam squib. Now the term dam squib means in our context that the Make in India program was less impressive than expected and one of the reasons for the failure of Make in India program was the absence of required level of investment. Then the author talks about the proposals of UPA alliance government and the proposal of national democratic alliance governments to increase the share of manufacturing sector in the economy from 16% to 25%. Now in order to increase the share of manufacturing there has to be commensurable scaling up of investment. Since investment did not come therefore the proposals of increasing the share of manufacturing in Indian economy did not happen. If you take overall Indian economy the share of agricultural sector will be around 17%. The share of industrial sector will be around 29% and the share of services sector will be around 53% every year. Now this has been the present trend. You should know that the terms industrial sector and manufacturing sector cannot be used interchangeably. Now this is because manufacturing sector is a subset of industrial sector. Industrial sector contributes something around 29% to the overall GDP but manufacturing sector contributes somewhere around 17% to the Indian economy. So from here we can know that the major contributor or the major shareholder of Indian economy is the services sector. The author says in order to increase the contribution of manufacturing sector to the economy from around 17% or 16% to 25% significant investments are required. So in the absence of such investment the share cannot be increased. And then the author says that for making India program the prime minister has expected much investment from private sector or the corporate sector. He says even if there is no contribution from private sector there must be investment and that is the standoff this author in such cases the government should step in and carry out the required investments. Then the author talks about two policies made by the government in two different times to arrive at a particular inference. The first attempt to make in India was made in the time period of 1947 to 1949. Now this attempt was made by declaring increasing internal production as the economic priority. This announcement was made by the first finance minister of independent India, Mr. Shanmugam Chetty. Internal production here means production in various sectors within our country. It is also sometimes called as domestic production. Now the target of internal production was achieved quite soon and it also increased the share of manufacturing in the economy. We are talking about 1940s, 1950s. The share of manufacturing in the economy was improved despite the presence of slow rate of growth during those times. Now in order to express slow rate of growth the author has used the term Hindu rate of growth. Now some economists say that India had Hindu rate of growth in those times to signal the slow rate of growth. The term Hindu was used because they felt that Indian policy makers were content with the slow rate of growth because of the philosophy of contentedness in Hinduism. The reason why the share of manufacturing was increased at that time period was because of a rise or surge in investment which was led by the government at that time. But the author notes that even though there was increase in share of manufacturing it did not emerge as a part of the moral victory of oppressed people. That is, yes there was increase in share in manufacturing sector and yes there was at least slow rate of growth. But this does not result in the enrichment of living standards of oppressed people. But the moment finance minister made an announcement they found resources from here and there and ensured that the share of manufacturing was increased and they ensured that the prioritized increasing internal production was given much importance. Now the difference with respect to make in India of 2014 to 19 with respect to increasing internal production then was that at that time the investment was led by the government in 1940s whereas it was not done in the case of make in India. So to take Indian economy to the next level three important ingredients are necessary. They are design, funding or resources and governance. By next level the author means Indian economy of 5 trillion US dollar. This means that India can achieve the 5 trillion US dollar economy using these three ingredients. But in such an economy will there be empowerment or happiness of all Indians? Will there be equality of opportunity in such an economy? Will there be conservation of nature? We have a history before us where we see both the programs did not had the intention to enrich the standard of living of all Indians. Both the programs mean the program in 1940s and the make in India program in recent times. The author says that both the programs of internal production in 1940s and the make in India program announced during the time period 2014 to 19 did not enrich the lives of all Indians. See while in 1947 India was beginning its term as a newly independent country and the main priority at that time was to somehow get the economy moving in the first place. They may be excused so they were not able to focus on enrichment of all Indians because their focus was only to get the economy moving. But this is not the case now. Now the economy should benefit all people. Therefore the author says that the economy has to be evaluated in terms of how much it contributes to the ease of living of all people. This is how an economy has to be evaluated. Then the author discusses about three important characteristics of a valuable economy. These are in the wish list of the author. The author means that even if India achieves fight relief economy to be called as a valuable economy it should have three characteristics. The first characteristic of a valuable economy is that there should be access to quality health and quality education for all people. Now the access to quality health and quality education results into happiness among the people. But if you look at the current status India has been ranked at 140 out of 156 countries in the World Happiness Report 2019. Now this report was prepared by United Nations Sustainable Development Solutions Network along with few other partners. If you want to make people happy you have to empower them. You have to provide them quality education and quality health. This should be accessible for all people. The second attribute or the second characteristic of a valuable economy is equality of opportunity. Here the author talks about two things. One is with respect to income inequality and the other is with respect to gender inequality. He says that the income inequality has been rising in India and also India is now more unequal than our neighbor China. The author says that part of income inequality is because of unequal distribution of income. With respect to gender inequality the author says that the sex ratio has shown a secular worsening since 1947. Note that the word secular has a totally different meaning in economics. It is not the same as we study in Indian polity. In economics the term secular means a long term trend. In our context for a longer period since 1947 the sex ratio has been worsening. Inequality in India can only be ended by equalizing capabilities across the individuals. This is the author's opinion. To achieve this outcome concerted public action through education is necessary. The third important attribute or characteristic of a useful and valuable economy is that there should not be damage to the environment in the pursuit of growth. The present state is not worth stating. This is because we already have 66 percent of world's most polluted cities in our country. In such a situation we see drop in natural capital or natural resources. This drop in natural capital affects human capital that is depletion of environment and less importance to environment protection shortens the lives of people and lowers the productivity. Here the most affected population are the poor. Therefore the task is to achieve all these characteristics in the economy while achieving the five trillion US dollar economy. This is the task before the prime minister. Therefore our growth process requires a realignment to achieve these characteristics. By this realignment we may have a slower rate of growth but it will channelize the growth towards the economic upliftment of poorer groups. We may not have measurable numbers of growth but we may have intangible wealth that is wealth that cannot be measured by numbers for example happiness. This will make an economy valuable. With this the author concludes the article. Now let us move on to the next news article. The displayed practice question will be discussed in the last session. This article is about one nation one election issue or one nation one poll issue. Now this article will be relevant in your prelims syllabus under current events of national importance and in Indian polity and governance particularly under political system. It is also relevant in main syllabus in GS paper two in parliament and state legislature important aspects of governance. Yesterday we had a very detailed discussion on one nation one poll issue. One nation one poll is nothing but one nation one election or simultaneous elections. Simultaneous elections means elections at the same time to all the three tiers of constitutional institutions or in other words simultaneous elections means election to all the three tiers of constitutional institutions taking place in a synchronized manner. Now the three-tier structure see one house of the people also called as Lokshaba also called as lower house and secondly state legislative assembly which is also called as Vidhan Shaba and thirdly the local government. We also saw that the prime minister had called for a meeting with leaders of other political parties to debate on the issue of one nation one election. Yesterday this meeting has happened and only 21 political parties attended this meeting convened by the prime minister but 11 political parties including the Indian National Congress skipped the meeting that was convened by the head of the government. Now at the end of this meeting the defense minister announced that a committee will be formed by the government to prepare a roadmap for one nation one election. See roadmap means a plan or strategy that is intended to achieve one goal so this means that the committee will come up with the plan or strategy to achieve the ultimate goal of one nation one election. Now defense minister noted that majority of the political parties have supported this idea and somehow raised questions about the feasibility of this idea but those who raised the questions they also did not oppose the move. Now this means they also supported the move. So now let's see the ideas given by various political parties one by one even though these views are with respect to political parties. Now you can use these views while writing your mains answer. See as we discussed yesterday it may take years to achieve the ultimate goal of one nation one poll. So in the meantime a question may be asked in the examination like what is your opinion on the issue of one nation one poll. What is its feasibility or give your suggestion to achieve this goal etc. Then in the light of these opinions or views you can answer these questions. Now let us see these opinions of political parties one by one. First the leader of Mumbai Congress has supported this debate. He said that being in continuous election mode is actually a roadblock to good governance and it distracts politicians from addressing real issues. Here roadblock means a hindrance or an obstruction or a huddle or good governance means the processes that are undertaken to meet the needs of the society by making the best use of resources. So the leader of Mumbai Congress has said continuous election mode will be an obstruction to good governance because politicians will be distracted due to continuous elections as they will be more focusing or concentrating on winning these elections. See after locus of elections they will focus on winning state legislative assembly elections then they will focus on local body elections. So they will focus on these elections not on the people. So they may not address the issues which the people face and they will not take any developmental actions that are needed. Next the chief minister of Andhra Pradesh has also agreed to this idea of one nation one poll but he is opposing the idea of fixed tenure of state legislature. Now if you see we discussed about this condition where we asked the question about what will happen when the state assembly gets dissolved. Will there be an election for entire country again just for the dissolving of state assembly of one particular state or will there be president's rule in that particular state till Lok Sabha elections are conducted. Now for this question the chief minister of Andhra Pradesh has provided an alternative or an answer. He mentions that when a state government falls it is because of a crisis in the state. So the central government cannot prolong the state assembly just to conduct simultaneous polls with the general elections. So he says if the state government is dissolved after two years of getting elected then there shall be re-election. Then when after the re-election a new government is formed the new government shall hold power only for the remaining three-year period. Now this will help the central government and election commission to hold simultaneous elections even when the state assembly is dissolved. Now we could also see the chief minister of Odisha state government also supported this idea. Now some parties opposed the idea of one nation one poll. Now they say that the proposal violates basic feature of the constitution particularly federalism. Now this may be because every assembly election reflects and raises the local issues of the state and the local issues might appear small at the national level. So these issues has to be addressed by local leadership only or the leadership at the state level only. But if you see the Lok Sabha elections these are held on national issues at the national level. So when simultaneous elections are held local issues receive less importance that is why they say it violates federalism. The another reason stated by the political parties who oppose this idea is there will be a gross misuse of article 356 of Indian constitution. So they say until this article 356 remains in the constitution simultaneous elections should not be conducted. Now what is article 356? Article 356 is one of the articles among the emergency provisions of Indian constitution. It deals with the imposition of president's rule in the states in a certain situation and that certain situation is the failure of constitutional machinery in the states. If you currently look in India we have president's rule in the state of Jammu Kashmir. Now last year after the dissolving state legislative assembly in June 2018 there they had a governance rule according to the constitution of Jammu and Kashmir. Section 92 of constitution of Jammu and Kashmir then in November-December it came under president's rule right now it is under president's rule. Now coming back to our discussion so the president's rule can be imposed when there is failure of constitutional machinery in the states. Now this means if a state government is unable to function according to constitution then central government can take direct control of state machinery and know that this provision can be exercised only when the president is satisfied that a situation has arisen in the state government that it cannot be carried out in accordance to constitution. Now this article interferes with the power of the states because when president's rule is imposed on states the elected government in the state is suspended and the administration is directly carried on by the governor of the state. We could see the misuse of article 356 in the past time particularly between 1952-1994 this power was exercised more than 90 occasions. Now this is the reason why the political parties are opposing simultaneous elections because if they say due to some reasons the Lokshaba is dissolved before completion of its tenure then due to the concept of simultaneous elections the central government will exercise its powers and use article 356 to dissolve the state legislative assemblies also so as to conduct the election for Lokshaba and state legislative assemblies and local bodies at the same time therefore the political parties are against the idea of one nation one election and in turn it also acts against federalism because this provision gives centralization of power and authority in a situation when simultaneous elections can become the norm of the day. Finally political parties also noted that the implementation of such a huge goal of one nation one election should not be hurriedly or hastily carried out it should be given a long and careful consideration or discussion before its implementation all over the country. Now some also suggested there is a need for a white paper here in this context the meaning of white paper is nothing but a government report is required with information or proportional on the issue of one nation one election. With this we come to the end of this article now let us move on to the analysis of next news article. This editorial article discusses about the ongoing tensions between Iran and United States of America now this article will be relevant in prelims syllabus under current events of international importance and also under world geography. Now certain information you could use on your mains questions with respect to Iran nuclear deal or Iran United States with respect to Iran and United States. So this analysis will be relevant in mains preparation in GS paper 2 under bilateral regional global groupings and also under effects of policies and politics of developed and developing countries on Indian interest. Before seeing this editorial first let us see what is meant by the game of chicken. Now it's a game theory which is a branch of mathematics it is concerned with the analysis of strategies for dealing with competitive situations. Here a participant's choice of action depends critically or completely on the actions of other participants see the game theory has been applied to context in war business bilateral relations and in biology related topics. Now this game of chicken which is a game theory typically describes two players who are heading toward each other now take the example of two cars in this picture as you can see both the cars are heading towards each other if one driver for example take driver two decides to swerve that is decides to suddenly change the direction or if he decides to slow down then driver two losses and he becomes the chicken and driver one wins if both the drivers decide to head towards each other then they will crash for sure so it is damage for both of them so here consider the cars as unite one car as united states and the other as iran the author tells that this game of chicken has the best theoretical description to understand the iran us tensions that are going on now here author has mentioned the timeline of us iran tensions see in 2015 united states iran china russia european union three european nations that is united kingdom france and germany signed the iran nuclear deal this iran nuclear deal is also called us joint comprehensive plan of action. USA was the first country to pull out from iran nuclear deal this happened in may 2018 USA is the only country to pull out from iran nuclear deal so far now this was followed by united states imposing economic sanctions on iran and then us also termed a branch of iran's government iran's armed forces as a terrorist group and then us sent more troops to west asia to alter the behavior of iran with respect to united states the us administration calls this strategy as the maximum pressure approach and now we can also see iran also threatening to breach the nuclear deal and it is also reportedly acting against us military sanctions as well so the author tells that this strategy of united states appears to be failing and as a result of this the author tells that there are war clouds that have gathered over the gulf here the gulf means persian gulf now see this map persian gulf is a very strategic location and many countries surround this gulf and are dependent on this gulf for oil export and the country surrounding this persian gulf are you know south arabia quake iraq iran omen united arab Emirates Qatar and Bahrain and there is straight of homus which is also located here this straight separates iran in the north and omen and united arab Emirates in the south and this tip is controlled by omen and it is named as musandam peninsula of omen so whenever any article discusses about gulf you know keep this points in mind and now the author is telling that us iran ties are at its low as it was during the final years of George w bush's presidency that period was around 2008 2009 next the author discusses the reasons for pulling out of united states from the iran nuclear deal the present us administration under mr donald trump has said that the president was unhappy with the iran nuclear deal that was arrived between iran and world powers in 2015 during the regime of previous president mr barak obama and he says that iran nuclear deal has left some issues unaddressed these issues are iran's ballistic missile program and also iran's disruptive actions or troublesome actions in the west asian region this is what from the side of united states and they say this is the reason why us has left the joint comprehensive plan of action the author tells that after united states has left this deal this deal has almost practically become a dead agreement so now united states want to renegotiate the deal but iran is not willing to do so in the terms and conditions of united states so us has thought to put the maximum pressure by means of economic sanctions so that iran will come back for talks with united states but iran is not ready for talks with us instead it has accused that the other signatories of the deal has done nothing concrete or done nothing solid to save iran from the sanctions of us there are a few companies that had shown interest in investing in iran even some chinese companies now they are pulling out from iran because of us sanctions and us also threatened the top buyers of iran's oil even including india so this has also resulted in a massive reduction of iran's export of oil according to the author such sanctions and actions of usa has not helped usa to bring iran for negotiating table for talks he says that it is not that iran has never cooperated with usa for talks here author mentioned some instances when iran actually helped or assisted usa whenever required see after september 11 2001 attacks on us twin towers usa waged war in afghanistan and iran assisted the united states war in afghanistan then iran also played a critical role in the formation of first post-thaliban afghan government after the afghan war but once this was over the us under the leadership of mr. josh w bush turned hostile or became an enemy almost against iran the president called iran and north koria as the axis of evil then mr. obama succeeded mr bush as the next u.s president with the help of european powers russia china president obama got the iranians to the negotiation table and they were able to come up with joint comprehensive plan of action or the iran nuclear deal in the year 2015 now after the deal was signed the us and iran cooperated in iraq in the fight against islamic state but once the direct war against islamic state in iraq was over mr trump pulled the united states out of this deal next the author discusses about possible reactions by iran to the actions of united states our first choice for iran is to return to talks on the terms of us this is so that iran would negotiate another nuclear deal and also get relief from the economic sanctions but the author tells that if iran agrees to the conditions of usa it will be humiliating for the nationalist ayatollahs now ayatollahs are the muslim clerics of iran they are part of iran's politics since 1979 and they built their political power on the theme of anti americanism the second choice for iran is to wait till the completion of presidency of mr trump and to keep hope that his successor would take the us back to the nuclear deal for this you need to understand or know slightly about us quality there are two major parties in united states one is the republicans and the other is the democrats if you see mr trump or mr judge w bush they are all republicans mr obama under whose rule this iran nuclear deal was signed is a democrat now if you see even now there are democratic presidential candidates who back this iran nuclear deal but there are there are also statements like the economic sanctions are affecting iran a lot and iran cannot wait till the next u.s presidential election that may have that will happen in november 2020 and the new president will come to power by the year 2020 end or 2021 beginning and there is also no surety that whether mr trump will be re-elected or not if he is re-elected then things will be almost remain the same if some other democrat comes to power then us might likely to join the iran nuclear deal again a third option for iran is to force the european union to resist or oppose or defy the economic sanctions of united states and to save the iran nuclear deal now iran has been waiting so that other members of this deal will come up with some solid mechanism to save this deal but this did not happen instead european union has set up a different channel with iran called us instax now which is called as instrument in support of trade exchanges if you see this instax channel is used mainly for transacting essential goods and not high value exports such as oil and gas with iran so the author says nothing has almost worked in favor of iran and iran has now moved to the last option that is showing maximum resistance to the maximum pressure exerted by the united states then the author mentions about iran's actions of resistance he tells that iran's response has been gradual in may 2019 iran gave a 60 day deadline to other signatories of iran nuclear deal to fix the problems in this deal now here the problem means the withdrawal of us and the other us sanctions with respect to iran iran also promised to keep the unspent enriched uranium and heavy water which it had been exporting earlier before the deal was signed now iran has told that the 60 day deadline is about to get over in some two weeks and it would start to enrich the uranium and also if iran starts producing high enriched uranium or in other words if iran keeps the stockpile that are beyond the limits of this nuclear deal it would be considered as a breach of the nuclear deal the author tells that these actions by iran may sound dangerously aggressive that is iran is taking serious but these actions by iran are totally almost rational he tells that firstly iran's current actions prove that the us administration's maximum pressure approach under mr trump is not working secondly the author tells that the present us administration is primarily responsible for the collapse of the deal and in case of any future conflict or even a war the us will not be in a position to get any help or support from european countries thirdly if iran is actually responsible for the recent tanker attacks that happened in the gulf then these attacks indicates the type of disruption that could be caused if a war or a conflict happened this region but if iran is not behind this recent tanker attacks then the maximum pressure strategy by usa shows that a third party like usa is capable of carrying out false flag attacks purposefully to trigger an unwanted conflict so using both the uranium enrichment threat and the recent tanker attack threats iran is using counter escalation for delaying or deterring the maximum pressure strategy of usa now we have seen all along this discussion that both iran and usa are heading towards each other so as per the game of chicken that we saw either iran or usa must swerve or slow down or any one of them should change the direction the author questions that if usa will swerve because of the failure of maximum pressure approach or whether iran will be able to sustaining its maximum resistance in the wake of continued targeting by the united states or the author predicts that if both countries head together it will result in a crash that is war or a severe conflict with this we come to the end of this article discussion the displayed a practice prelims question will be discussed in the last session now this news article is about global trends report now this will be relevant in prelims levels under current events of national and international importance and also under world's geography now this global trends report is released by unhcr now unhcr is united nations high commissioner for refugees it was created in 1950 during the aftermath or after the second world war the main purpose was to help you know lacks of europeans who had fled or lost their homes the primary purpose of united nations high commissioner for refugees is to safeguard the rights and well-being of people who have been forced to flee from their country or the place they live now unhcr ensures that everybody who has been forced to flee should have the right to seek asylum and also to find safe refuge in another country now these persons who have been forced to flee are called by different names such as refugees internally displaced population returnees stateless people and also asylum seekers now refugees mean someone who has been forced to flee his or her country because of persecution or war or violence now here persecuting means ill treatment for reasons of race religion or political opinion or membership in a particular social group now the recent example is the rohingya refugees of miyana who follow islam they have been persecuted for a long time in their country on grounds of religion now internally displaced population means those persons or groups of persons who have been forced to flee or to leave their homes from where they usually live but they have not crossed the internationally recognized border of their country you can also call them as refugees in their own country returnees refer to those displaced people who are returning to the original place or the country where they have once lived stateless people means population who are not considered as a national or citizen by any country under its legislations the rohingyas are are also called as stateless people and rohingyas are mostly muslim minority who have traditionally lived in miyanmar and we are saying rohingyas are stateless people because in their own state they were not recognized as citizens even in other states also they were not recognized as citizens they were not given the rights of a citizen asylum seekers mean persons who have applied for protection in any country as a refugee and the person is also waiting for the conclusion of his or her status in the country where they have applied now with these definitions let us see the global trends report released by UNHCR now the report has said that developing countries are facing the problems of world's refugee crisis it is not the rich western nations that are facing the problems of refugees the news article states that around seven crore people have been displaced because of war or persecution and it is seen that the developing countries are hosting most of these displaced people who have fled this war or persecution and half of world's forcibly displaced population are children approximately some 3.5 crores and the refugees are around 2.59 crores and internally displaced persons around 4.13 crores and around 35 lakh people were asylum seekers in this graph you could see the proportion of displaced population out of the total world's population you could see that this ratio is on the rise for the last 10 years the proportion of population that is displaced is almost nine persons per thousand persons worldwide the report also tells that more than two-thirds of all refugees worldwide came from just five countries in 2018 now these countries are Syria, Afghanistan, South Sudan, Myanmar and Somalia and top five countries that hosted the refugees in 2018 were Turkey, Pakistan, Uganda, Sudan and Germany now you could use these information in any of your main answers with respect to if need be to highlight the refugee crisis of if asked about internal displacement of population now the displayed practice prelims question will be discussed in the last session now let us move on to the next news article now this article is about economic advisory council to the prime minister now this council has rejected a research paper of former chief economic advisor on GDP growth now this article could be relevant in prelims in current events of national importance and economic development in mains in GS paper 3 under Indian economy and issues related to growth now the news is regarding a detailed note which has been released by economic advisory council to the prime minister and in this note the council has explained its objections to a research paper on India's GDP growth which was released by former chief economic advisor Mr. Arvind Subramanian before looking at this news article let's see about economic advisory council to the prime minister this now this economic advisory council was set up with a view to provide suggestions or advice so that the government will get awareness on various viewpoints on key or important economic issues now there is no defined organizational structure in any law or even in the constitution with respect to this economic advisory council so we can say that this council is an independent body or independent mechanism and also a non-statutory non-constitutional body this council has been reconstituted many times and headed by various economists of international eminence it's also a non-permanent body see the recent council has been set up with the approval of prime minister in september 2017 and it has reputed economists and experts and there have been periods when there was no council at all so it is not a permanent body now the chairman of this economic advisory council is different from the chief economic advisor of government of India now the chief economic advisor heads the economic division of department of economic affairs now that comes under ministry of finance so know that the chairman of economic advisory council is not the same person as the or not the same designation as the chief economic advisor of government of India now let's look at the functions of this economic advisory council now we saw that it advises the prime minister it advises the prime minister on any issues related to economy which has been referred by the prime minister the council also presents its views on issues of macroeconomic importance by on its own or by so motto or based on reference from prime minister the council summits periodic reports to prime minister on macroeconomic developments and issues with implications for the economic policy and as usual one more function they will generally add in terms of any council is that they also respond or attends any other task referred by the prime minister or as and when the prime minister requires now come to the news article see this note detailed note released by this council has stated that mr. zubramanian's paper lacks rigor or that it lacks proper efforts and this paper would not stand up to academic scrutiny or academic investigation the council's note says that the paper is based on careless choice of indicators such as specific data sources and description alternative hypothesis choice of countries in the sample these are some of the indicators and these are of technical nature with respect to research and research methodology and based on these the note has said that the research paper will not stand the academic scrutiny or academic research standards this paper research paper was released in harvard university by the former chief economic advisor the paper has said that the gdp growth between 2011 and 2017 was significantly lower than the seven percent shown by the government official figures for this the council's note has said that the author of the paper could have easily criticized the methodology of gdp rather than pin pointing or rather than telling that the gdp numbers have fallen before seven percent the former chief economic advisor in the research paper has stated that the analysis of 17 indicators shows that there was an overestimation of gdp in 2011 17 so for this the council's note states that these 17 indicators are carefully selected or cherry picked according to the preference of the researcher from the center for monitoring indian economy now the center for monitoring indian economy is a private database of financial performance of indian companies and the principal source of this database is annual reports of individual companies this is how they develop data the center for monitoring indian economy the note tells that the data from this center is not a primary source of information on gdp indicators these 17 indicators are mostly related to the industrial and manufacturing sector only so if you see we have three sectors in economy agriculture manufacturing and service sector now this council says that the indicators from service sector contribute 60 percent of gdp today we saw that it contributes around 54 percent so they are saying 60 percent roughly 60 percent of gdp and indicators from agriculture contributes to 18 percent of gdp these sectors from the indicators of service sector or indicators of agricultural sector has not been taken up for this research study by the former chief economic advisor so the council's note rejects this research paper and states that it has almost neglected almost the indicators that contribute to nearly 80 percent of gdp in his research paper the former chief economic advisor states that he was not including tax collection data in his analysis because the relationship to gdp was unstable but the council says that tax collections are hard data hard data means quantitative data in the form of numbers or graphs or measurable data those data that can be quantified and they also say that these data are not based on surveys and therefore do not suffer from the disadvantage of surveys because surveys are based on representative sample of a total population and the council's note has told that the tax collection data should not have been ignored by the former chief economic advisor the government says there have been no major changes in tax laws till the end period in the authors analysis that is the researchers analysis that is up to march 31 2017 we know that gst was introduced on july 1 2017 and the tax collections got stabilized and even increased after the implementation of gst in india and this you can see in this graph provided by ministry of finance see here the red line shows the tax collections for the financial year 2017 18 the average tax collection for this financial year has been around 90 000 crores but in financial year 2018 19 you can see that the average tax collections have increased to nearly 97 000 crores right this we can see from the blue line because it shows the tax collections for the financial year 2018 2019 so we can see that the tax collections have improved after the introduction of gst in india the former chief economic advisor has told in his research paper that the income national income accounting and the methodology of the new gdp series must be reviewed for this the council's note state that the present methodology ensures that the economy is transparent and is also well managed and it is and is according to the international standards we know about prime minister's economic advisory council from prelims point of view and you can use this tax collection information with respect to gst and author's contention with respect to overestimation of gdp all these things if at all that is required for your main census now the displayed practice prelims question will be discussed in the next session the last session now let us move on to the final session of the day now the first question increase in internal production was made a priority for the first time in independent india during the prime minister ship off now in today's discussion we saw that increase in internal production was made a priority by the first finance minister of independent india mr shanmugam shetty and we saw that he was financed mr during the period 1947 to 1949 so therefore it was pandit javaharlal nehru who was the prime minister during that time period and he was the first prime minister of independent india so the answer for this question is option d javaharlal nehru now the next question which of the following countries share border with persian gulf they have given south arabia lebanon oman iraq so the options appear as bit tricky now if you don't remember the map you would easily think that lebanon is also a country that is open to persian gulf now it is wrong because lebanon shares border with mediterranean sea and not with persian gulf so if two is wrong you can easily eliminate options b and options option d so now we are left with options a and c from both these options we can see that south arabia and oman share borders with persian gulf now with respect to oman the area of musandam peninsula actually borders the persian gulf and we also saw today that iraq also shares border with persian gulf therefore the correct answer for this question is option c one three and four only third question global trends report an annual report on the world level trends on displacement is released by which of the following we saw in our analysis that this global trends report is released by united nations high commissioner for refugees so the answer for this question is option c now the next question is with respect to economic advisory council to the prime minister they have given two statements and are asking which of the statements are correct the first statement economic advisory council to prime minister has been constituted to advise the prime minister on all critical economic and related matter which have been referred to it by the prime minister the first statement is correct because that is the main function of economic advisory council so statement one is correct now the second statement the chairman of the economic advisory council is the chief economic advisor to the government of india now this statement is wrong because we saw that the chairman of economic advisory council is different from chief economic advisor of government of india the chief economic advisor heads the economic division of department of economic affairs which comes under ministry of finance therefore second statement is wrong but the economic advisory council is constituted with approval from prime minister that includes a separate chairman so the correct answer for this question is option a one only now with this we come to the end of today's the hindu news analysis if you like the video press the like button comment share and subscribe to shankaraya's academy for daily updates


Russia preparing for Ukraine's expected counter-offensive in Mariupol, civilians being evacuated. Russia is preparing for Ukraine's counter-offensive in the east of the country. The Russian army is concentrating heavy equipment and air defense systems in Ukraine's occupied Mariupol city in eastern Donetsk region. Petra Andryushenko, advisor to the mayor of Mariupol, wrote in his Telegram channel on Monday. Russia have registered the movement of tanks and air defense systems from the Burdiansk city in Zeporovsky region, direction towards Novovo-Azovsky district. Following the evacuation announcement, invaders started to drag heavy equipment and air defense systems to Mariupol for the second day. Andryushenko wrote, Russian troops have been transferring military equipment through Mariupol to other directions of the front for a while. General staff of the Ukrainian Armed Forces reported on Monday that Russian troops have stopped delivering fuel to gas stations and have closed police stations in the occupied territories in the south where they recently announced evacuation of the population due to the expected Ukrainian counter-offensive. Russian troops are evacuating civilians from Energodar, Tokmak, Pologov, Vasilyevka cities among others. Ukrainian military officials have claimed that Russian troops are evacuating civilians from the frontline areas of the occupied territories of Ukraine in order to subsequently use them as a human shield. Russian troops are actively preparing for the defense of Mariupol that was occupied from Ukraine in May last year. Andryushenko said on Monday that Russia has started mobilizing male state employees in the city.