This is not even new to TI. They've had Linux support for their chips for years. I went to a TI OMAP event 4 years ago and they were pitching Linux on their OMAP chips. At the time they handed off Linux support to a third party called RidgeRun. RR went out of business as far as I know. The TI reps at one point were trying to get my company to be their Linux support provider. Nowadays it's MonteVista doing the TI Linux. The only thing that means is that their board support packages are going to be even more expensive. So, I don't know about the OP, but I don't consider this noteworthy.
Note that Linux does NOT run on their DSPs, it runs on the RISC (usually ARM) core of their multi-core chips. The DSP usually runs DSP-BIOS.
Seriously, Code Composer Studio is truly one of the worst pieces of software I've ever used. When using a JTAG debugger on the parallel port, does it have to continually poll the paraport while I'm not debugging or transferring code (that is, 99% of the time), and in the process slowing my high end workstation down to a painful crawl? Is it still the case that you need two separate versions of CCS running at the same time if you're using both cores on an OMAP? I hope they fixed that one. And heaven forbid you should want to change your JTAG emulator settings to a different chip. Good luck getting it to work ever again with your current setup.
That's not even getting into the IDE bugs. Rendering issues, autocompletion that hardly works (option to turn it off), daily crashes, and the fact that it often forgets to rebuild files whos dependencies have changed!
TI: Read this -- I will always recommend against using TI parts whenever I can do so, because your tools are crap, your Linux support is crap (hand off to RidgeRun, oh wait, they're dead, MonteVista), your in-house code is crap, and your support is utter and complete crap (unless you're Nokia).
Which only goes to show that you haven't considered the implications of optimization in modern processors. A Pentium 4 can operate above 3 GHz. This means that light can travel no more than 10 centimeters in the duration of one clock pulse.
The speed of light = 299,792,458 m/s. At 3GHz, that would be 100cm.
Now imagine discussing them with your coworker. Imagine thinking in your head "What should I do if prRecord->m_pszKeyTag is NULL?" Humans are good at symbolic manipulation. Giving something a name makes it easier to deal with. Giving something a label that cannot be easily manipulated in language (spoken or in your head) severely hampers the ability to think it through.
The argument for Hungarian is usually "but it lets you know what the variables are". This is the maintainance programmer argument. This argument rarely makes sense in reality, unless some very bad programming is involved. First of all, if you do not understand the current code you are about to modify, you should *not* be modifying it. If your maintainance programmer is just going to have a look at two lines of code, add a third in the middle, and hope for the best then you are truly fucked. He has obviously not understood the code enough to know what the consequences of the modification will be. The reality is, if your current logic unit is such a monstrosity that looking up the types of your variables is a burden, and your variable names are so poor that it is insufficient to infer at least a basic understanding of what is going on without having to resort to prepending types, you should probably step away from the keyboard, turn off your computer, and tell your boss that you had an epiphany and will be pursuing a career in French fry development.
Our coding standard is a little like this: Write clean code that can be easily understood by reading it. That is, good variable and function names, try not to make any absurdly complicated statements, and have your comments explain the logic of the operations. As for style, try to stick with the style that the original author started with. And finally, all people who use Hungarian notation are locked in the basement and given menial tasks until they repent their sinful ways.
I tried to make use of these bots, but apparently they're worthless. See transcript below
[11:24] joe_bruin: greetings, professor falcon [11:24] MovieFone: Hi there. I'm the new MovieFone bot! I can find movies for you anywhere in the country in a fraction of second. All you have to do is give me part of the title, an actor or director's name. I can also send you alerts when your favorite films are opening. Type privacy anytime to review the policy. Type any movie you want to see or menu to get going.
======= Movie of the Week =======
Harry Potter and the Goblet of Fire - Movie Site [11:25] joe_bruin: what are your prime directives? [11:25] MovieFone: - Movies for Today
1 -F- For Your Consideration
2 -P- Prime: with Captions
3 -P- The Cranes are Flying
4 -F- All We Are Saying
5 -F- What Is It?
6 -N- Prime
7 -P- Are We There Yet?
8 -P- What the Bleep Do We Know!?
Type # next to movie to see showtimes, M to go back to the Main Menu or anything else to search again.
P=Past, N=New, S=Soon, F=Future
[11:27] joe_bruin: open the pod bay doors, hal [11:27] MovieFone: - Movies for Today
1 -P- The Lollipop Girls in Hard Candy
2 -P- The Last Detail
Type # next to movie to see showtimes, M to go back to the Main Menu or anything else to search again.
P=Past, N=New, S=Soon, F=Future
[11:28] joe_bruin: initiate self destruct sequence [11:28] MovieFone: I think you should type, menu. I was not able to find any movies related to what you typed.
======= Movie of the Week =======
Harry Potter and the Goblet of Fire - Movie Site
You're confusing multi-core with superscalar. Superscalar means having multiple parallel execution units along the instruction pipeline. Superscalar processors have been in the mainstream for some time (Intel and AMD x86 chips of the current decade have been superscalar). VLIW architectures are explicit superscalar architectures, that is the instruction sequence is written to the parallelism possible in the system. By contrast, x86 systems use complex instruction decoders in hardware to figure out where parallelism is possible.
A superscalar system core still has one main execution context (hyperthreading complicates this, but that's not the point here). It has one currently effective interrupt state, virtual memory map, set of (coherent) registers. No matter how much parallelism it has, a superscalar architecture only runs one thread context at a time. Being multi core is quite different. It has additional full cores, with individual L1 caches, TLBs, register states, interrupt maps. A core is a full on second processor, and can run an entirely different process from the one running on any other core on the system. Note that the cores in a multi core system may (and in this case, are) superscalar. In fact, Intel is working on dual-core Itanium processors (although it will be quite a while before they come out).
As for the failings of the Itanic EPIC architecture, well, that's a whole story in and of itself.
The speed of electricity in a wire is not really the issue (it's about half the speed of light, I think. I'm sure someone will correct me). The real issue is signal propagation. When a transistor switches from closed to open or back, the electrical signal travelling through the wire is not a perfect on/off. The voltage ramps up or ramps down as some function of the length of the connection, width of the wire, conductivity, leakage from the transistor, inductance,... The system needs a bit of time to "settle" into the new high or low state. This is a big limiting factor in the clocking of modern CPUs. For communication off the chip, it's far worse. Now the lines are no longer 90nm (or whatever the chip was made at) in width, and have to go through a far longer distance. That's why today's processors are limited at around 1GHz to the outside world, while internally they can be faster.
Optical interconnects alleviate many of these problems. With a laser, the ramp up time is significantly shorter, there's no capacitance in the system, and it is far less prone to interference. So, on a 100 GHz optical link you can multiplex 100 1GHz pins (essentially running a P4's FSB on two wires instead of something like 180), thereby significantly reducing the pin count. Or you could run the pins 100 times as fast, meaning much less processor waiting on RAM or bus data.
Ah, you're confused. The data that your stored in/dev/null can be retrieved from/dev/random. However, it may take an unbounded number of read operations to get the data you want out of it.
Who modded this insightful? As the author states, this is a comparison of three components that are similar in the three OSs (and even those not in great detail). It is NOT an overall comparison of every feature of the three kernels. This throws out the parent poster's points 1, 2, and 5. This was a technical analysis, so license is not relevant (parent's point 3). The article is skewed to a Solaris direction, but I would hardly call it propaganda. To summarize the skew:
1) Solaris has more abstraction for architecture dependent code than Linux, and is therefore slower but more portable. 2) There are also more people working on Linux, leading to faster development but not as high a quality.
See, that wasn't so bad. Overall, the author concludes that the three OSs do things quite similarly and stand to benefit from each other in the future.
NAME flock - apply or remove an advisory lock on an open file SYNOPSIS #include <sys/file.h> int flock(int fd, int operation) DESCRIPTION Apply or remove an advisory lock on an open file. The file is specified by fd. Valid operations are given below: LOCK_SH Shared lock. More than one process may hold a shared lock for a given file at a given time.
LOCK_EX Exclusive lock. Only one process may hold an exclusive lock for a given file at a given time.
LOCK_UN Unlock.
LOCK_NB Don't block when locking. May be speci­ fied (by or'ing) along with one of the other operations.
A single file may not simultaneously have both shared and exclusive locks.
A file is locked (i.e., the inode), not the file descrip­ tor. So, dup(2) and fork(2) do not create multiple instances of a lock.
RETURN VALUE On success, zero is returned. On error, -1 is returned, and errno is set appropriately. ERRORS EWOULDBLOCK The file is locked and the LOCK_NB flag was selected. CONFORMING TO 4.4BSD (the flock(2) call first appeared in 4.2BSD). NOTES flock(2) does not lock files over NFS. Use fcntl(2) instead: that does work over NFS, given a sufficiently recent version of Linux and a server which supports lock­ ing.
flock(2) and fcntl(2) locks have different semantics with respect to forked processes and dup(2). SEE ALSO open(2), close(2), dup(2), execve(2), fcntl(2), fork(2), lockf(3)
There are also locks.txt and mandatory.txt in /usr/src/linux/Documentation.
The same way we do it today: emulators. Of course, your cdrom is not going to survive that long, so there's no need to worry about that. Have you considered leaving your legacy carved into stone tablets?
You put your card up to the reader not because that is the range of the signal coming out of the card. Rather, it is the range of the magnetic induction field coming out of the reader to power the card. The signal the card emits can probably be read at 100 meters by a person with a high gain directional antenna.
Of course, Suica cards are not that prone to theft because the most that person could do is take a spin around the Yamanote Line at your expense. When there's serious money involved, you will see someone place a high powered field generator in a trash can by the entrance to a mall, and then sit in a car nearby and gather access numbers from everyone going in or out and massively cash out. Non-contact based transactions are a bad idea. Faraday-cage wallet, here I come.
You seem to misunderstand the article. This IS an ipod adapter (or another optional adapter that is not compatible with the ipod but is with other players). According to the article, this interface gives you access to just the first 6 playlists on the ipod, which is a common misfeature of the current BMW ipod adapter. The only difference is that it is installed in the factory (or more likely at the dealership).
Once again, this is a CD Changer to Ipod adapter. Nothing new here, folks.
You kid, but I'm currently working with the ATI/Nucleus operating system, and have heard colleagues in Texas refer to is as the "Nuculous" OS. ARGH, it annoys me to no end. Actually what annoys me is that I have to be professional and I can't give them shit about it.
Kids, just because the president does it doesn't make it right. Say no to nucular proliferation.
Seriously. If high availability systems is not your company's core competency, call IBM, Red Hat, Sun, Oracle, Novell. Tell them you have a million users. Tell them you have a very fat checkbook and that you want them to provide you with a complete solution. Tell them that nothing but 5 nines of uptime will do.
DO NOT implement a half-assed solution. Unless you really know what you're doing (and if you were, you wouldn't be asking this question), don't assume that a million Linux servers strewn about a million offices and data centers is the best solution, even if it is easiest to set up and administer. Maybe it is, come up with a proposal with hard numbers and see how they compare to the vendors. A million dollars spent on a Sun E10000, and Oracle Grid subscription (scales perfectly, right?), or a million IBM engineers flown into your site when an emergency happens may be worth paying for.
There's no simple facility to even say "update all the config files in this directory". This one example gives you an idea of how bad things are overall.
Using etc-update, manually merge all the config files that you do NOT want to be replaced (ie, ones that you've modified). Now you're left with a list of all files that you don't want to manually merge, just overwrite. choose command -3 (it's right there in the menu above your command prompt). This will replace all the remaining config files with their new versions. -5 if you don't want to use "mv -i". Done.
As for installing x, you could get a binary package of it from the gentoo servers, so all it would take is the time to download it.
This is not even new to TI. They've had Linux support for their chips for years. I went to a TI OMAP event 4 years ago and they were pitching Linux on their OMAP chips. At the time they handed off Linux support to a third party called RidgeRun. RR went out of business as far as I know. The TI reps at one point were trying to get my company to be their Linux support provider. Nowadays it's MonteVista doing the TI Linux. The only thing that means is that their board support packages are going to be even more expensive. So, I don't know about the OP, but I don't consider this noteworthy.
Note that Linux does NOT run on their DSPs, it runs on the RISC (usually ARM) core of their multi-core chips. The DSP usually runs DSP-BIOS.
Seriously, Code Composer Studio is truly one of the worst pieces of software I've ever used. When using a JTAG debugger on the parallel port, does it have to continually poll the paraport while I'm not debugging or transferring code (that is, 99% of the time), and in the process slowing my high end workstation down to a painful crawl? Is it still the case that you need two separate versions of CCS running at the same time if you're using both cores on an OMAP? I hope they fixed that one. And heaven forbid you should want to change your JTAG emulator settings to a different chip. Good luck getting it to work ever again with your current setup.
That's not even getting into the IDE bugs. Rendering issues, autocompletion that hardly works (option to turn it off), daily crashes, and the fact that it often forgets to rebuild files whos dependencies have changed!
TI: Read this -- I will always recommend against using TI parts whenever I can do so, because your tools are crap, your Linux support is crap (hand off to RidgeRun, oh wait, they're dead, MonteVista), your in-house code is crap, and your support is utter and complete crap (unless you're Nokia).
Haha, oops. Thanks for the correction.
For some reason, I was thinking 1000cm = 1 meter, which is obviously wrong. That's what happens when you post before lunch.
Which only goes to show that you haven't considered the implications of optimization in modern processors. A Pentium 4 can operate above 3 GHz. This means that light can travel no more than 10 centimeters in the duration of one clock pulse.
The speed of light = 299,792,458 m/s. At 3GHz, that would be 100cm.
Hungarian notation has its (extremely limited) uses. The reality is that it turns code into garbage. Go ahead, read aloud the lines of code below.
// the old c style
if(cur == last) rec->tag = name;
// camel case
if(currentKey == lastEntry) Record->keyTag = userName;
// hungarian
if(iCurrentKey == iLastEntry) prRecord->m_pszKeyTag = pszUserName;
Now imagine discussing them with your coworker. Imagine thinking in your head "What should I do if prRecord->m_pszKeyTag is NULL?" Humans are good at symbolic manipulation. Giving something a name makes it easier to deal with. Giving something a label that cannot be easily manipulated in language (spoken or in your head) severely hampers the ability to think it through.
The argument for Hungarian is usually "but it lets you know what the variables are". This is the maintainance programmer argument. This argument rarely makes sense in reality, unless some very bad programming is involved. First of all, if you do not understand the current code you are about to modify, you should *not* be modifying it. If your maintainance programmer is just going to have a look at two lines of code, add a third in the middle, and hope for the best then you are truly fucked. He has obviously not understood the code enough to know what the consequences of the modification will be. The reality is, if your current logic unit is such a monstrosity that looking up the types of your variables is a burden, and your variable names are so poor that it is insufficient to infer at least a basic understanding of what is going on without having to resort to prepending types, you should probably step away from the keyboard, turn off your computer, and tell your boss that you had an epiphany and will be pursuing a career in French fry development.
Our coding standard is a little like this:
Write clean code that can be easily understood by reading it. That is, good variable and function names, try not to make any absurdly complicated statements, and have your comments explain the logic of the operations. As for style, try to stick with the style that the original author started with. And finally, all people who use Hungarian notation are locked in the basement and given menial tasks until they repent their sinful ways.
I hope this helps.
I tried to make use of these bots, but apparently they're worthless. See transcript below
[11:24] joe_bruin: greetings, professor falcon
[11:24] MovieFone: Hi there. I'm the new MovieFone bot! I can find movies for you anywhere in the country in a fraction of second. All you have to do is give me part of the title, an actor or director's name. I can also send you alerts when your favorite films are opening. Type privacy anytime to review the policy. Type any movie you want to see or menu to get going.
======= Movie of the Week =======
Harry Potter and the Goblet of Fire - Movie Site
[11:25] joe_bruin: what are your prime directives?
[11:25] MovieFone:
- Movies for Today
1 -F- For Your Consideration
2 -P- Prime: with Captions
3 -P- The Cranes are Flying
4 -F- All We Are Saying
5 -F- What Is It?
6 -N- Prime
7 -P- Are We There Yet?
8 -P- What the Bleep Do We Know!?
Type # next to movie to see showtimes, M to go back to the Main Menu or anything else to search again.
P=Past, N=New, S=Soon, F=Future
[11:27] joe_bruin: open the pod bay doors, hal
[11:27] MovieFone:
- Movies for Today
1 -P- The Lollipop Girls in Hard Candy
2 -P- The Last Detail
Type # next to movie to see showtimes, M to go back to the Main Menu or anything else to search again.
P=Past, N=New, S=Soon, F=Future
[11:28] joe_bruin: initiate self destruct sequence
[11:28] MovieFone: I think you should type, menu. I was not able to find any movies related to what you typed.
======= Movie of the Week =======
Harry Potter and the Goblet of Fire - Movie Site
Clearly this proves Intelligent Design, because only God would make Godzilla, the holy lizard in His name.
You're confusing multi-core with superscalar. Superscalar means having multiple parallel execution units along the instruction pipeline. Superscalar processors have been in the mainstream for some time (Intel and AMD x86 chips of the current decade have been superscalar). VLIW architectures are explicit superscalar architectures, that is the instruction sequence is written to the parallelism possible in the system. By contrast, x86 systems use complex instruction decoders in hardware to figure out where parallelism is possible.
A superscalar system core still has one main execution context (hyperthreading complicates this, but that's not the point here). It has one currently effective interrupt state, virtual memory map, set of (coherent) registers. No matter how much parallelism it has, a superscalar architecture only runs one thread context at a time. Being multi core is quite different. It has additional full cores, with individual L1 caches, TLBs, register states, interrupt maps. A core is a full on second processor, and can run an entirely different process from the one running on any other core on the system. Note that the cores in a multi core system may (and in this case, are) superscalar. In fact, Intel is working on dual-core Itanium processors (although it will be quite a while before they come out).
As for the failings of the Itanic EPIC architecture, well, that's a whole story in and of itself.
Whoa.. slow down Adolph
You're familiar with the Bill of Rights, but with neither Swift nor Godwin's law?
The speed of electricity in a wire is not really the issue (it's about half the speed of light, I think. I'm sure someone will correct me). The real issue is signal propagation. When a transistor switches from closed to open or back, the electrical signal travelling through the wire is not a perfect on/off. The voltage ramps up or ramps down as some function of the length of the connection, width of the wire, conductivity, leakage from the transistor, inductance, ... The system needs a bit of time to "settle" into the new high or low state. This is a big limiting factor in the clocking of modern CPUs. For communication off the chip, it's far worse. Now the lines are no longer 90nm (or whatever the chip was made at) in width, and have to go through a far longer distance. That's why today's processors are limited at around 1GHz to the outside world, while internally they can be faster.
Optical interconnects alleviate many of these problems. With a laser, the ramp up time is significantly shorter, there's no capacitance in the system, and it is far less prone to interference. So, on a 100 GHz optical link you can multiplex 100 1GHz pins (essentially running a P4's FSB on two wires instead of something like 180), thereby significantly reducing the pin count. Or you could run the pins 100 times as fast, meaning much less processor waiting on RAM or bus data.
Ah, you're confused. The data that your stored in /dev/null can be retrieved from /dev/random. However, it may take an unbounded number of read operations to get the data you want out of it.
Who modded this insightful? As the author states, this is a comparison of three components that are similar in the three OSs (and even those not in great detail). It is NOT an overall comparison of every feature of the three kernels. This throws out the parent poster's points 1, 2, and 5. This was a technical analysis, so license is not relevant (parent's point 3). The article is skewed to a Solaris direction, but I would hardly call it propaganda. To summarize the skew:
1) Solaris has more abstraction for architecture dependent code than Linux, and is therefore slower but more portable.
2) There are also more people working on Linux, leading to faster development but not as high a quality.
See, that wasn't so bad. Overall, the author concludes that the three OSs do things quite similarly and stand to benefit from each other in the future.
FLOCK(2) Linux Programmer's Manual FLOCK(2)
NAME
flock - apply or remove an advisory lock on an open file
SYNOPSIS
#include <sys/file.h>
int flock(int fd, int operation)
DESCRIPTION
Apply or remove an advisory lock on an open file. The
file is specified by fd. Valid operations are given
below:
LOCK_SH Shared lock. More than one process may
hold a shared lock for a given file at a
given time.
LOCK_EX Exclusive lock. Only one process may
hold an exclusive lock for a given file
at a given time.
LOCK_UN Unlock.
LOCK_NB Don't block when locking. May be speci­
fied (by or'ing) along with one of the
other operations.
A single file may not simultaneously have both shared and
exclusive locks.
A file is locked (i.e., the inode), not the file descrip­
tor. So, dup(2) and fork(2) do not create multiple
instances of a lock.
RETURN VALUE
On success, zero is returned. On error, -1 is returned,
and errno is set appropriately.
ERRORS
EWOULDBLOCK
The file is locked and the LOCK_NB flag was
selected.
CONFORMING TO
4.4BSD (the flock(2) call first appeared in 4.2BSD).
NOTES
flock(2) does not lock files over NFS. Use fcntl(2)
instead: that does work over NFS, given a sufficiently
recent version of Linux and a server which supports lock­
ing.
flock(2) and fcntl(2) locks have different semantics with
respect to forked processes and dup(2).
SEE ALSO
open(2), close(2), dup(2), execve(2), fcntl(2), fork(2),
lockf(3)
There are also locks.txt and mandatory.txt in
/usr/src/linux/Documentation.
Linux 1998-12-11 FLOCK(2)
and by typing ht (hide turtle), you could put it in stealth mode, invisibly drawing lines in enemy territory.
The tagging of "Professional Edition" on to an OS or piece of software is the equivalent of " FROD LOCUST GT EDITION ... 2.6 cam engine Car "
2.6 cams? Wow, I didn't realize they come in fractional values.
Kernel Panic: Bus Error
Nothing for you to see here. Please move along.
How can they read my obsolete digital document?
The same way we do it today: emulators. Of course, your cdrom is not going to survive that long, so there's no need to worry about that. Have you considered leaving your legacy carved into stone tablets?
You put your card up to the reader not because that is the range of the signal coming out of the card. Rather, it is the range of the magnetic induction field coming out of the reader to power the card. The signal the card emits can probably be read at 100 meters by a person with a high gain directional antenna.
Of course, Suica cards are not that prone to theft because the most that person could do is take a spin around the Yamanote Line at your expense. When there's serious money involved, you will see someone place a high powered field generator in a trash can by the entrance to a mall, and then sit in a car nearby and gather access numbers from everyone going in or out and massively cash out. Non-contact based transactions are a bad idea. Faraday-cage wallet, here I come.
You seem to misunderstand the article. This IS an ipod adapter (or another optional adapter that is not compatible with the ipod but is with other players). According to the article, this interface gives you access to just the first 6 playlists on the ipod, which is a common misfeature of the current BMW ipod adapter. The only difference is that it is installed in the factory (or more likely at the dealership).
Once again, this is a CD Changer to Ipod adapter. Nothing new here, folks.
You kid, but I'm currently working with the ATI/Nucleus operating system, and have heard colleagues in Texas refer to is as the "Nuculous" OS. ARGH, it annoys me to no end. Actually what annoys me is that I have to be professional and I can't give them shit about it.
Kids, just because the president does it doesn't make it right. Say no to nucular proliferation.
Seriously. If high availability systems is not your company's core competency, call IBM, Red Hat, Sun, Oracle, Novell. Tell them you have a million users. Tell them you have a very fat checkbook and that you want them to provide you with a complete solution. Tell them that nothing but 5 nines of uptime will do.
DO NOT implement a half-assed solution. Unless you really know what you're doing (and if you were, you wouldn't be asking this question), don't assume that a million Linux servers strewn about a million offices and data centers is the best solution, even if it is easiest to set up and administer. Maybe it is, come up with a proposal with hard numbers and see how they compare to the vendors. A million dollars spent on a Sun E10000, and Oracle Grid subscription (scales perfectly, right?), or a million IBM engineers flown into your site when an emergency happens may be worth paying for.
No, you are simply ignorant.
impinge Pronunciation Key (m-pnj)
v. impinged, impinging, impinges
v. intr.
There's no simple facility to even say "update all the config files in this directory". This one example gives you an idea of how bad things are overall.
Using etc-update, manually merge all the config files that you do NOT want to be replaced (ie, ones that you've modified). Now you're left with a list of all files that you don't want to manually merge, just overwrite. choose command -3 (it's right there in the menu above your command prompt). This will replace all the remaining config files with their new versions. -5 if you don't want to use "mv -i". Done.
As for installing x, you could get a binary package of it from the gentoo servers, so all it would take is the time to download it.
Thank you, come again.