added 60 changesets to branch 'refs/remotes/HaikuPM-github/package-management' old head: 0af009d250c4f07925a26d60c735e94746e8de62 new head: eeebe2843a61c82661720930ee0002b0a5b53ced overview: https://github.com/haiku/HaikuPM/compare/0af009d...eeebe28 ---------------------------------------------------------------------------- 278f66b: x86[_64]: Enable NX on non-boot CPUs as soon as possible [ Pawel Dziepak <pdziepak@xxxxxxxxxxx> ] 1a6ebaa: Update translations from Pootle [ Niels Sascha Reedijk <niels.reedijk@xxxxxxxxx> ] 28390f6: ext2: access the parent variable once checked it's non null * cleanup * add some inode flags we don't use [ Jérôme Duval <jerome.duval@xxxxxxxxx> ] a933ad6: virtio_net: initial skeleton driver. [ Jérôme Duval <jerome.duval@xxxxxxxxx> ] 5594217: Fix accidentally truncated addresses in call frame unwind. [ Rene Gollent <anevilyak@xxxxxxxxx> ] 672b260: ARM: kernel: Fix compilation issue with new gas. Turns out the new gas does not like spaces :( [ Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> ] 1ea8fd5: Debugger: Add missing std::nothrow. [ Rene Gollent <anevilyak@xxxxxxxxx> ] 5077cb0: Debugger: add Inspect context item to Registers view. - Allows one to treat the value of a register as a memory address and jump directly to inspecting said address. [ Rene Gollent <anevilyak@xxxxxxxxx> ] eb86163: virtio_net: add feature labels. [ Jérôme Duval <jerome.duval@xxxxxxxxx> ] 28cf626: virtio_net: allocate queues, read macaddress, handle ioctl. [ Jérôme Duval <jerome.duval@xxxxxxxxx> ] 5a2c582: add a constant for 10G base T ethernet. [ Jérôme Duval <jerome.duval@xxxxxxxxx> ] acd58c2: ARM: boot: Make dd on MacOS happy Turns out dd on MacOS does not like '1M' as size descriptor, but wants '1m'. To prevent us breaking Linux builds (as it does not accept 1m), just use the actual number of bytes explicitely instead. [ Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> ] a7e9ce6: Use uname -s instead of uname -o ...since BSD uname (on OS X at least) doesn't have a -o param, only a -s, Haiku has both, and both print "Haiku". [ John Scipione <jscipione@xxxxxxxxx> ] 736c1f8: Localize bitsinfo Closes ticket #7162. Signed-off-by: Niels Sascha Reedijk <niels.reedijk@xxxxxxxxx> [ Jorma Karvonen <karvonen.jorma@xxxxxxxxx> ] cae234a: Localize bmpinfo Closes ticket #7164 Signed-off-by: Niels Sascha Reedijk <niels.reedijk@xxxxxxxxx> [ Jorma Karvonen <karvonen.jorma@xxxxxxxxx> ] 6a66acd: Localize tgainfo Closes ticket #7168 Signed-off-by: Niels Sascha Reedijk <niels.reedijk@xxxxxxxxx> [ Jorma Karvonen <karvonen.jorma@xxxxxxxxx> ] 89f89a0: ARM: boot: pass boot disk identifier This to stop the vfs_boot.cpp code from complaining. [ Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> ] b9e8ec7: debugger/debuganalyzer: Remove the explicit -Werror from Jamfile Specifying -Werror in the Jamfiles directly prevents the build system from disabling error-on-warning for some arch specific warnings (or even globally), breaking the ARM build. The "src/apps" directory is already setup to compile with -Werror by the build system anyway, so remove the explicit setting here. [ Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> ] 0fa2d68: ARM: stub out missing int64 atomic functions Also, add an item to the TODO list for this. Really need to figure it out soon... [ Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> ] ae4ad70: ARM: stub out makebootable so we can build a full haiku-image [ Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> ] 38bd76a: u-boot: make sure host makebootable builds too Somehow missed these few lines in my last commit. [ Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> ] ed6722a: norflash: Add hack to hide start of NOR flash This is a workaround for hiding U-Boot that is stored in the first 2 128k blocks, so we can put a BFS image into NOR to boot from (since we do not have support for SD/MMC yet in Haiku). When manually putting a BFS filesystem at block 3 we actually get right up to the point where BootScript is attempted to be executed! [ Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> ] 5308f23: usb_disk: returns B_DEV_NOT_READY for SCSI_SENSE_KEY_NOT_READY ...instead of B_DEV_NO_MEDIA. The latter seems to imply we stop testing the unit is ready in usb_disk_device_added(). Based on a patch provided by markh in #9589. [ Jerome Duval <jerome.duval@xxxxxxxxx> ] 92ab471: ntfs: make sure our confidence is higher then the intel partition add-on This as the intel partition addon just does a very weak test, and the NTFS test is much safer. This prevents NTFS filesystems that have a valid boot sector signature but no partition table, from being picked up by the intel partition table add-on instead of the ntfs add-on. Patch provided by markh, thanks! [ Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> ] dc377ab: beos_mime: add sniffer rule for .mp3 files Patch from markh (ticket #9790), thanks! [ Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> ] c75ca47: dpc: fix comments spelling. [ Jerome Duval <jerome.duval@xxxxxxxxx> ] 02cac49: Debugger: Implement #9960. - DebugReportGenerator now retrieves and dumps disassembly for the crashing function up to the crashing line. [ Rene Gollent <anevilyak@xxxxxxxxx> ] 779d821: HaikuDepot: Use PackageInfoRefs instead of PackageInfos Instead of storing PackageInfo objects directly in the PackageLists, store PackageInfoRefs instead. This makes a lot of operations much cheaper, and it also allows making changes to a PackageInfo (which now exists only once) and have those changes reflect everywhere. In particular, it will be easier to populate some information of the PackageInfo lazily, and to listen for changes on a PackageInfo object. [ Stephan Aßmus <superstippi@xxxxxx> ] 9202a71: HaikuDepot: Add interface for PackageInfoListener. Also defines PackageInfoEvent. [ Stephan Aßmus <superstippi@xxxxxx> ] 697c0d7: hdaudio: check pin sense on init, don't wait for a switch event with headphones plugged on boot, sound was still enabled on speakers. see #9956 [ Jerome Duval <jerome.duval@xxxxxxxxx> ] 92dbf18: HaikuDepot: Added some listener support to PackageInfo [ Stephan Aßmus <superstippi@xxxxxx> ] 1c38517: ListView: More safe ScrollToSelection implementation The Problem was observed in the Time Preferences Zone view - the selection was set inside of TimeZoneView::DoLayout() call on the OutlineListView control that had zero-sized Bounds. After the control was resized the selection stay mainly hidden "under" the upper edge. The Problem looks like generic so should be fixed in the interface kit code. Proposed fix introduces additional check for the scroll position to not cross the top edge of control. [ Siarzhuk Zharski <zharik@xxxxxx> ] 6b48fa0: usb_disk: fixes 64bit trace build [ Jerome Duval <jerome.duval@xxxxxxxxx> ] 1a07e84: usb_disk: fixed mounting a USB disk on x86_64 * usb_disk_prepare_partial_buffer() was miscalculating the offset in the temp buffer, which led to a page fault later when copying to the user buffer. [ Jerome Duval <jerome.duval@xxxxxxxxx> ] 8f284ef: intel_extreme: don't expose overlay in accelerant when not allocated ... in the driver. [ Jerome Duval <jerome.duval@xxxxxxxxx> ] af8e2aa: Debugger: add settings manager for source location mappings. - If it was necessary to help the debugger locate a particular source file due to it not being found on disk at the location specified in the debug information, the associated user-supplied path mappings are now saved and restored in the team settings. The file manager still needs a bit of extra work to apply these as files are added though. [ Rene Gollent <anevilyak@xxxxxxxxx> ] 64aae11: Fix incorrect name usage. [ Rene Gollent <anevilyak@xxxxxxxxx> ] ad054cf: Debugger: Implement #9961. - FileManager now saves any explicitly located file mappings, and properly restores them when reloading the same team/files later. [ Rene Gollent <anevilyak@xxxxxxxxx> ] f7e1dc6: Debugger: Add selection support to MemoryView. - The Inspector's memory view now supports selecting chunks of the hex display in the manner one would in a TextView. The selection can also be copied to the clipboard, or if it matches the size of a target address, can be used as input for an address to inspect directly. Still needs some fine tuning, but basically works. [ Rene Gollent <anevilyak@xxxxxxxxx> ] 59cef1f: Build fix. [ Rene Gollent <anevilyak@xxxxxxxxx> ] 153c6c4: Debugger: Fix data copy issue. - B_PRIx8 unfortunately doesn't necessarily strictly stay within the bounds of an 8-bit hex constant, so force the size passed to snprintf to make it that way. [ Rene Gollent <anevilyak@xxxxxxxxx> ] 62b27e6: Fix previous format problem more correctly. Thanks Ingo, Oliver and Ithamar for the hint. [ Rene Gollent <anevilyak@xxxxxxxxx> ] 7eec822: HaikuDepot: Package information can be retrieved asynchronously [ Stephan Aßmus <superstippi@xxxxxx> ] b9898c4: HaikuDepot: Also lock the model when updating the list [ Stephan Aßmus <superstippi@xxxxxx> ] f7628f8: HaikuDepot: Fixed selecting the right package when the list is sorted. [ Stephan Aßmus <superstippi@xxxxxx> ] 72b9e4a: Fix gcc2 build. [ Rene Gollent <anevilyak@xxxxxxxxx> ] ed6f171: BColumnListView: Enable invalidating rows, fix SetField() * Seems like there was no easy way to simply invalidate a given BRow. Introduced BColumnListView::InvalidateRow(). * BRow::SetField() tried to invalidate the row, but invalidated the listview instead of the BOutlineView responsible for drawing the list contents. Use the new InvaalidateRow(). [ Stephan Aßmus <superstippi@xxxxxx> ] b748950: HaikuDepot: Update package list when necessary * Pass the Model lock to the PackageListView. * Register a PackageInfoListener with every listed package. * Update the rating when it is fetched. [ Stephan Aßmus <superstippi@xxxxxx> ] 533036d: libroot: Make sure PTHREAD_STACK_MIN is in the allowed range [ Pawel Dziepak <pdziepak@xxxxxxxxxxx> ] 772568c: system: Use B_PAGE_SIZE to define stack sizes As korli suggested use B_PAGE_SIZE for defining stack size related definitions what seems to be more natural for them and also may help if we ever support an architecture with page size different than 4kB. [ Pawel Dziepak <pdziepak@xxxxxxxxxxx> ] 4efb0a6: posix: Update PTHREAD_STACK_MIN to match MIN_USER_STACK_SIZE Thanks for pointing this out Pete! [ Pawel Dziepak <pdziepak@xxxxxxxxxxx> ] c315b2b: Revert "ScreenSaver: ScrollToSelection off-by-one" This reverts commit fb90f7ffe49c07e82cd8cf68012929c87319f656. Underlying issue fixed in hrev46066 [ John Scipione <jscipione@xxxxxxxxx> ] 4f4270c: loader/u-boot: fix alignment of uimage components. The "blobs" in a U-Boot uimage are aligned at 4 bytes, which we did not take into account. Found this when adding a 3rd blob containing the Flattened Device Tree for ARM. [ Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> ] ba06f07: ARM: kernel: fix timer resolution and implement basic timekeeping. The previously used method for programming the timer did not take into account that our timespec is 64bit while the register we poke it into is 32 bit. Since the PXA (SoC in Verdex target) has a limited scale of resolution (us,ms,second) we dynamicly determine the one that we can most closely match, and set that. For f.ex. snooze to work however, we also need system_time to work. The current implementation uses a system timer at microsecond resolution to keep track of time. Although the code is far from perfect, committing it now before it gets lost, since I'm working on the infrastructure code to properly factor out the SoC specific code out of the core ARM architecture code (so the kernel can support more then our poor old Verdex QEMU target ;)) [ Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> ] 102ce46: norflash: do not accept any device as a valid 'norflash' Seems the original code was a little *too* simple ;-) [ Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> ] dfa5aa0: device_manager: Move init_node_tree to after kdl cmd registration This helps when debugging, since when a driver/module causes a crash while registering with the device manager, you can actually look at the device manager state ;-) [ Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> ] 2c130f0: Debugger: Fix calculation in MemoryView. - The offset calculation for mapping the current point wasn't taking into account the number of bytes per hex block, causing it to be proportionally further off if one switched to 16/32/64-bit hex mode. Gets mouse selection working properly in said modes. [ Rene Gollent <anevilyak@xxxxxxxxx> ] 98c5cb2: Debugger: Fix RegistersView context menu. - Always grab the address value from the actual register value column, rather than the one that's in fact under the mouse. Fixes the "Inspect" item sending you to inspect address 0 if you happened to right click over the register name rather than the value. [ Rene Gollent <anevilyak@xxxxxxxxx> ] 89d18e9: Debugger: MemoryView - Tweak target address drawing. - Since we actually draw a selection now, change the target address highlight to clearly distinguish it. Rather than inverting it, it's now drawn with a normal background and red text in the hex display. The text mode subcomponent still shows it as an invert though, since the latter doesn't currently indicate the selection. [ Rene Gollent <anevilyak@xxxxxxxxx> ] eeebe28: Manually merge 1410faca6c30d39dc08a7bf7caa7630ce5a16d35. [ Rene Gollent <anevilyak@xxxxxxxxx> ] ---------------------------------------------------------------------------- 100 files changed, 2874 insertions(+), 596 deletions(-) build/jam/images/HaikuImage | 12 +- build/scripts/build_cross_tools | 2 +- build/scripts/build_cross_tools_gcc4 | 2 +- data/catalogs/apps/activitymonitor/fi.catkeys | 5 +- data/catalogs/apps/icon-o-matic/fr.catkeys | 4 +- data/catalogs/kits/mail/fi.catkeys | 3 +- data/catalogs/preferences/screensaver/be.catkeys | 4 +- data/catalogs/preferences/screensaver/de.catkeys | 4 +- data/catalogs/preferences/screensaver/fi.catkeys | 4 +- data/catalogs/preferences/screensaver/fr.catkeys | 4 +- data/catalogs/preferences/screensaver/hu.catkeys | 4 +- data/catalogs/preferences/screensaver/ja.catkeys | 4 +- docs/develop/ports/arm/todo.txt | 5 + headers/posix/limits.h | 2 +- headers/posix/net/if_media.h | 1 + headers/private/interface/ColumnListView.h | 4 + headers/private/system/thread_defs.h | 8 +- .../accelerants/intel_extreme/accelerant.cpp | 8 +- src/add-ons/accelerants/intel_extreme/mode.cpp | 5 +- .../kernel/drivers/audio/hda/hda_codec.cpp | 98 ++-- .../kernel/drivers/disk/norflash/norflash.cpp | 17 +- .../drivers/disk/usb/usb_disk/usb_disk.cpp | 26 +- src/add-ons/kernel/drivers/network/Jamfile | 1 + .../kernel/drivers/network/virtio/Jamfile | 8 + .../kernel/drivers/network/virtio/virtio_net.cpp | 462 ++++++++++++++++++ .../kernel/drivers/network/virtio/virtio_net.h | 202 ++++++++ src/add-ons/kernel/file_systems/ext2/Inode.cpp | 6 +- src/add-ons/kernel/file_systems/ext2/ext2.h | 40 +- src/add-ons/kernel/file_systems/ntfs/fs_func.c | 4 +- src/add-ons/kernel/generic/dpc/dpc.c | 8 +- src/apps/debuganalyzer/gui/Jamfile | 3 - src/apps/debuganalyzer/gui/chart/Jamfile | 3 - src/apps/debuganalyzer/gui/main_window/Jamfile | 3 - src/apps/debuganalyzer/gui/table/Jamfile | 3 - src/apps/debuganalyzer/gui/thread_window/Jamfile | 3 - src/apps/debuganalyzer/model/Jamfile | 3 - src/apps/debuganalyzer/model_loader/Jamfile | 3 - src/apps/debuganalyzer/util/Jamfile | 3 - src/apps/debugger/Jamfile | 4 +- src/apps/debugger/arch/x86/disasm/Jamfile | 3 - .../debugger/arch/x86_64/ArchitectureX8664.cpp | 4 +- src/apps/debugger/arch/x86_64/disasm/Jamfile | 3 - .../controllers/DebugReportGenerator.cpp | 87 +++- .../debugger/controllers/DebugReportGenerator.h | 9 +- src/apps/debugger/controllers/TeamDebugger.cpp | 4 + src/apps/debugger/demangler/Jamfile | 3 - src/apps/debugger/dwarf/Jamfile | 3 - src/apps/debugger/files/FileManager.cpp | 86 +++- src/apps/debugger/files/FileManager.h | 17 +- .../settings/TeamFileManagerSettings.cpp | 128 +++++ .../debugger/settings/TeamFileManagerSettings.h | 41 ++ src/apps/debugger/settings/TeamSettings.cpp | 38 ++ src/apps/debugger/settings/TeamSettings.h | 9 + .../gui/inspector_window/MemoryView.cpp | 463 +++++++++++++++++-- .../gui/inspector_window/MemoryView.h | 34 +- .../gui/team_window/RegistersView.cpp | 49 +- .../gui/team_window/RegistersView.h | 5 + .../gui/team_window/VariablesView.cpp | 2 +- src/apps/haiku-depot/Jamfile | 1 + src/apps/haiku-depot/MainWindow.cpp | 99 ++-- src/apps/haiku-depot/MainWindow.h | 2 +- src/apps/haiku-depot/Model.cpp | 114 ++++- src/apps/haiku-depot/Model.h | 14 +- src/apps/haiku-depot/PackageInfo.cpp | 54 ++- src/apps/haiku-depot/PackageInfo.h | 22 +- src/apps/haiku-depot/PackageInfoListener.cpp | 86 ++++ src/apps/haiku-depot/PackageInfoListener.h | 61 +++ src/apps/haiku-depot/PackageInfoView.cpp | 113 ++++- src/apps/haiku-depot/PackageInfoView.h | 14 +- src/apps/haiku-depot/PackageListView.cpp | 152 +++++- src/apps/haiku-depot/PackageListView.h | 15 +- src/bin/makebootable/platform/u-boot/Jamfile | 3 + .../platform/u-boot/makebootable.cpp | 6 + src/bin/network/ifconfig/ifconfig.cpp | 2 +- src/data/mime_db/audio/mpeg | 2 + src/kits/interface/ColumnListView.cpp | 21 +- src/kits/interface/ListView.cpp | 11 +- .../screensaver/ScreenSaverWindow.cpp | 5 +- src/system/boot/platform/u-boot/Jamfile | 2 +- src/system/boot/platform/u-boot/devices.cpp | 20 +- src/system/boot/platform/u-boot/uimage.cpp | 2 +- src/system/kernel/arch/arm/arch_asm.S | 4 +- src/system/kernel/arch/arm/arch_timer.cpp | 74 ++- src/system/kernel/arch/x86/arch_cpu.cpp | 9 - .../x86/paging/64bit/X86PagingMethod64Bit.cpp | 14 +- .../arch/x86/paging/pae/X86PagingMethodPAE.cpp | 12 +- .../kernel/device_manager/device_manager.cpp | 4 +- src/system/kernel/lib/arch/arm/Jamfile | 2 - src/system/libroot/os/arch/arm/atomic.S | 89 +--- src/system/libroot/posix/pthread/pthread_attr.c | 4 + src/tools/makebootable/platform/u-boot/Jamfile | 12 + src/tools/translation/bitsinfo/Jamfile | 11 +- src/tools/translation/bitsinfo/bitsinfo.cpp | 56 ++- src/tools/translation/bitsinfo/bitsinfo.rdef | 17 + src/tools/translation/bmpinfo/Jamfile | 9 +- src/tools/translation/bmpinfo/bmpinfo.cpp | 99 ++-- src/tools/translation/bmpinfo/bmpinfo.rdef | 17 + src/tools/translation/tgainfo/Jamfile | 11 +- src/tools/translation/tgainfo/tgainfo.cpp | 215 +++++---- [ *** stats truncated: 1 lines dropped *** ] ############################################################################ Commit: 278f66b6b1dd47b3834c768308fa3d21a5eadb88 Author: Pawel Dziepak <pdziepak@xxxxxxxxxxx> Date: Sat Sep 14 03:25:56 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:17 2013 UTC x86[_64]: Enable NX on non-boot CPUs as soon as possible ---------------------------------------------------------------------------- diff --git a/src/system/kernel/arch/x86/arch_cpu.cpp b/src/system/kernel/arch/x86/arch_cpu.cpp index 67212e2..a817ec0 100644 --- a/src/system/kernel/arch/x86/arch_cpu.cpp +++ b/src/system/kernel/arch/x86/arch_cpu.cpp @@ -753,15 +753,6 @@ arch_cpu_init_percpu(kernel_args* args, int cpu) } } - // If availalbe enable NX-bit (No eXecute). Boot CPU can not enable - // NX-bit here since PAE should be enabled first. - if (cpu != 0) { - if (x86_check_feature(IA32_FEATURE_AMD_EXT_NX, FEATURE_EXT_AMD)) { - x86_write_msr(IA32_MSR_EFER, x86_read_msr(IA32_MSR_EFER) - | IA32_MSR_EFER_NX); - } - } - return B_OK; } diff --git a/src/system/kernel/arch/x86/paging/64bit/X86PagingMethod64Bit.cpp b/src/system/kernel/arch/x86/paging/64bit/X86PagingMethod64Bit.cpp index b560db0..2a6ef79 100644 --- a/src/system/kernel/arch/x86/paging/64bit/X86PagingMethod64Bit.cpp +++ b/src/system/kernel/arch/x86/paging/64bit/X86PagingMethod64Bit.cpp @@ -60,10 +60,8 @@ X86PagingMethod64Bit::Init(kernel_args* args, fKernelVirtualPML4 = (uint64*)(addr_t)args->arch_args.vir_pgdir; // if availalbe enable NX-bit (No eXecute) - if (x86_check_feature(IA32_FEATURE_AMD_EXT_NX, FEATURE_EXT_AMD)) { - x86_write_msr(IA32_MSR_EFER, x86_read_msr(IA32_MSR_EFER) - | IA32_MSR_EFER_NX); - } + if (x86_check_feature(IA32_FEATURE_AMD_EXT_NX, FEATURE_EXT_AMD)) + call_all_cpus_sync(&_EnableExecutionDisable, NULL); // Ensure that the user half of the address space is clear. This removes // the temporary identity mapping made by the boot loader. @@ -384,3 +382,11 @@ X86PagingMethod64Bit::PutPageTableEntryInTable(uint64* entry, SetTableEntry(entry, page); } + +/*static*/ void +X86PagingMethod64Bit::_EnableExecutionDisable(void* dummy, int cpu) +{ + x86_write_msr(IA32_MSR_EFER, x86_read_msr(IA32_MSR_EFER) + | IA32_MSR_EFER_NX); +} + diff --git a/src/system/kernel/arch/x86/paging/pae/X86PagingMethodPAE.cpp b/src/system/kernel/arch/x86/paging/pae/X86PagingMethodPAE.cpp index f8b4712..6e1da99 100644 --- a/src/system/kernel/arch/x86/paging/pae/X86PagingMethodPAE.cpp +++ b/src/system/kernel/arch/x86/paging/pae/X86PagingMethodPAE.cpp @@ -149,10 +149,8 @@ struct X86PagingMethodPAE::ToPAESwitcher { call_all_cpus_sync(&_EnablePAE, (void*)(addr_t)physicalPDPT); // if availalbe enable NX-bit (No eXecute) - if (x86_check_feature(IA32_FEATURE_AMD_EXT_NX, FEATURE_EXT_AMD)) { - x86_write_msr(IA32_MSR_EFER, x86_read_msr(IA32_MSR_EFER) - | IA32_MSR_EFER_NX); - } + if (x86_check_feature(IA32_FEATURE_AMD_EXT_NX, FEATURE_EXT_AMD)) + call_all_cpus_sync(&_EnableExecutionDisable, NULL); // set return values _virtualPDPT = pdpt; @@ -173,6 +171,12 @@ private: x86_write_cr4(x86_read_cr4() | IA32_CR4_PAE | IA32_CR4_GLOBAL_PAGES); } + static void _EnableExecutionDisable(void* dummy, int cpu) + { + x86_write_msr(IA32_MSR_EFER, x86_read_msr(IA32_MSR_EFER) + | IA32_MSR_EFER_NX); + } + void _TranslatePageTable(addr_t virtualBase) { page_table_entry* entry = &fPageHole[virtualBase / B_PAGE_SIZE]; ############################################################################ Commit: 1a6ebaa02ea84117961e2a412fdc07f75fc634f9 Author: Niels Sascha Reedijk <niels.reedijk@xxxxxxxxx> Date: Sat Sep 14 04:14:01 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:17 2013 UTC Update translations from Pootle ---------------------------------------------------------------------------- diff --git a/data/catalogs/apps/activitymonitor/fi.catkeys b/data/catalogs/apps/activitymonitor/fi.catkeys index eea09ea..b1bc1b1 100644 --- a/data/catalogs/apps/activitymonitor/fi.catkeys +++ b/data/catalogs/apps/activitymonitor/fi.catkeys @@ -1,4 +1,4 @@ -1 finnish x-vnd.Haiku-ActivityMonitor 2739021859 +1 finnish x-vnd.Haiku-ActivityMonitor 1211510241 P-faults DataSource P-viat Media nodes DataSource Mediasolmut Threads DataSource Säikeet @@ -6,6 +6,7 @@ Always on top ActivityWindow Aina päällimmäisenä Add graph ActivityWindow Lisää kuvaaja Teams DataSource Ryhmät Hide legend ActivityView Piilota merkin selitys +MiB DataSource mebitavua Network send DataSource Verkkolähetys CPU usage (combined) DataSource Suoritinkäyttö (yhdistetty) CPU DataSource Suoritin @@ -26,12 +27,14 @@ Update time interval: SettingsWindow Päivitä aikaväli: TX DataSource Shorter version for Sending Läh. Quit ActivityWindow Poistu Block cache memory DataSource Lohkovälimuisti +%.1f KiB/s DataSource %.1f kibitavua/s Remove graph ActivityView Poista kuvaaja %lld sec. SettingsWindow %lld s %lld ms SettingsWindow %lld ms CPU usage DataSource Suoritinkäyttö Raw clipboard DataSource Raakadataleikepöytä Sems DataSource Opastimet +%.1f MiB DataSource %.1f Mebitavua ActivityMonitor System name Aktiviteettivalvonta Running applications DataSource Suoritetaan sovelluksia Semaphores DataSource Opastimet diff --git a/data/catalogs/apps/icon-o-matic/fr.catkeys b/data/catalogs/apps/icon-o-matic/fr.catkeys index 6383f58..8066314 100644 --- a/data/catalogs/apps/icon-o-matic/fr.catkeys +++ b/data/catalogs/apps/icon-o-matic/fr.catkeys @@ -1,4 +1,4 @@ -1 french x-vnd.haiku-icon_o_matic 605140404 +1 french x-vnd.haiku-icon_o_matic 806315965 Select All Icon-O-Matic-PathManipulator Sélectionner tout Add Style Icon-O-Matic-AddStylesCmd Ajouter un style Color (#%02x%02x%02x) Style name after dropping a color Couleur (#%02x%02x%02x) @@ -67,6 +67,7 @@ Contour Transformation Contour Perspective Transformation Perspective Move Transformer Icon-O-Matic-MoveTransformersCmd Déplacer la Transformation Opacity Icon-O-Matic-PropertyNames Opacité +Add with path Icon-O-Matic-ShapesList Ajouter avec un chemin Gradient type Icon-O-Matic-StyleTypes Type de dégradé Icon-O-Matic System name Icon-O-Matic Cancel Icon-O-Matic-Menu-Settings Annuler @@ -79,6 +80,7 @@ META:ICON Attribute Icon-O-Matic-SavePanel Attribut META:ICON Translation Y Icon-O-Matic-PropertyNames Translation en Y Rotate Icon-O-Matic-TransformationBoxStates Pivoter Remove Transformer Icon-O-Matic-RemoveTransformersCmd Supprimer une transformation +Rotate Path Indices Icon-O-Matic-RotatePathIndiciesCmd Rotation des indices de chemin Add Transformer Icon-O-Matic-AddTransformersCmd Ajouter une transformation Remove Icon-O-Matic-PathsList Enlever Nudge Control Point Icon-O-Matic-NudgePointsCommand Déplacer le point de contrôle diff --git a/data/catalogs/kits/mail/fi.catkeys b/data/catalogs/kits/mail/fi.catkeys index da29589..994a53b 100644 --- a/data/catalogs/kits/mail/fi.catkeys +++ b/data/catalogs/kits/mail/fi.catkeys @@ -1,7 +1,8 @@ -1 finnish x-vnd.Haiku-libmail 161731481 +1 finnish x-vnd.Haiku-libmail 4037525365 Partially download messages larger than ProtocolConfigView Osittain ladatut viestit suurempia kuin Password: ProtocolConfigView Salasana: Remove mail from server when deleted ProtocolConfigView Poista sähköposti palvelimelta poistettaessa +KiB ProtocolConfigView kibitavua Mail server: ProtocolConfigView Sähköpostipalvelin: Select… MailKit Valitse... Connection type: ProtocolConfigView Yhteystyyppi: diff --git a/data/catalogs/preferences/screensaver/be.catkeys b/data/catalogs/preferences/screensaver/be.catkeys index 48c4f84..3925c11 100644 --- a/data/catalogs/preferences/screensaver/be.catkeys +++ b/data/catalogs/preferences/screensaver/be.catkeys @@ -1,4 +1,4 @@ -1 belarusian x-vnd.Haiku-ScreenSaver 3630119516 +1 belarusian x-vnd.Haiku-ScreenSaver 232492478 Could not load screen saver ScreenSaver Не ўдалося загрузіць захавальнік экрана 30 seconds ScreenSaver 30 секунд Start screensaver ScreenSaver Запусціць захавальнік @@ -11,7 +11,9 @@ Display Power Management Signaling not available ScreenSaver Кіраванне ScreenSaver System name Захавальнік Экрана Test ScreenSaver Тэст General ScreenSaver Агульныя +Fade now when mouse is here ScreenSaver Зацямняць перасунуўшы указальнік мышы сюды Enable screensaver ScreenSaver Уключыць захавальнік +Don't fade when mouse is here ScreenSaver Не зацямняць калі указальнік мышы знаходзіцца тут Cancel ScreenSaver Адмена Turn off screen ScreenSaver Выключыць экран No options available ScreenSaver Ніякія опцыі недаступныя diff --git a/data/catalogs/preferences/screensaver/de.catkeys b/data/catalogs/preferences/screensaver/de.catkeys index b039065..a576ac2 100644 --- a/data/catalogs/preferences/screensaver/de.catkeys +++ b/data/catalogs/preferences/screensaver/de.catkeys @@ -1,4 +1,4 @@ -1 german x-vnd.Haiku-ScreenSaver 3630119516 +1 german x-vnd.Haiku-ScreenSaver 232492478 Could not load screen saver ScreenSaver Bildschirmschoner konnte nicht geladen werden. 30 seconds ScreenSaver 30 Sekunden Start screensaver ScreenSaver Bildschirmschoner starten @@ -11,7 +11,9 @@ Display Power Management Signaling not available ScreenSaver Stromsparfunktione ScreenSaver System name Bildschirmschoner Test ScreenSaver Test General ScreenSaver Allgemein +Fade now when mouse is here ScreenSaver Sofort starten, wenn Maus in diesem Eck Enable screensaver ScreenSaver Bildschirmschoner aktivieren +Don't fade when mouse is here ScreenSaver Nicht starten, wenn Maus in diesem Eck Cancel ScreenSaver Abbrechen Turn off screen ScreenSaver Bildschirm ausschalten No options available ScreenSaver Keine Optionen verfügbar diff --git a/data/catalogs/preferences/screensaver/fi.catkeys b/data/catalogs/preferences/screensaver/fi.catkeys index 3aa51a0..f7a7179 100644 --- a/data/catalogs/preferences/screensaver/fi.catkeys +++ b/data/catalogs/preferences/screensaver/fi.catkeys @@ -1,4 +1,4 @@ -1 finnish x-vnd.Haiku-ScreenSaver 3630119516 +1 finnish x-vnd.Haiku-ScreenSaver 232492478 Could not load screen saver ScreenSaver Näytönsäästäjän lataus epäonnistui 30 seconds ScreenSaver 30 sekuntia Start screensaver ScreenSaver Käynnistä näytönsäästäjä @@ -11,7 +11,9 @@ Display Power Management Signaling not available ScreenSaver Näytön jännites ScreenSaver System name Näytönsäästäjäasetukset Test ScreenSaver Testaa General ScreenSaver Yleinen +Fade now when mouse is here ScreenSaver Häivytä nyt kun hiiren kohdistin on tässä Enable screensaver ScreenSaver Ota käyttöön näytönsäästäjä +Don't fade when mouse is here ScreenSaver Älä häivytä, kun hiiren kohdistin on tässä Cancel ScreenSaver Peru Turn off screen ScreenSaver Käännä näyttö pois päältä No options available ScreenSaver Valitsimia ei ole käytettävissä diff --git a/data/catalogs/preferences/screensaver/fr.catkeys b/data/catalogs/preferences/screensaver/fr.catkeys index 46ae094..630beaf 100644 --- a/data/catalogs/preferences/screensaver/fr.catkeys +++ b/data/catalogs/preferences/screensaver/fr.catkeys @@ -1,4 +1,4 @@ -1 french x-vnd.Haiku-ScreenSaver 3630119516 +1 french x-vnd.Haiku-ScreenSaver 232492478 Could not load screen saver ScreenSaver Impossible de charger l'économiseur d'écran 30 seconds ScreenSaver 30 secondes Start screensaver ScreenSaver Démarrer l'économiseur @@ -11,7 +11,9 @@ Display Power Management Signaling not available ScreenSaver Le système d'éco ScreenSaver System name Économiseur d'écran Test ScreenSaver Tester General ScreenSaver Général +Fade now when mouse is here ScreenSaver Estomper maintenant lorsque la souris est ici Enable screensaver ScreenSaver Activer l'économiseur +Don't fade when mouse is here ScreenSaver Ne pas estomper lorsque la souris est ici Cancel ScreenSaver Annuler Turn off screen ScreenSaver Extinction de l'écran No options available ScreenSaver Aucune option disponible diff --git a/data/catalogs/preferences/screensaver/hu.catkeys b/data/catalogs/preferences/screensaver/hu.catkeys index ebb2c4e..a41a110 100644 --- a/data/catalogs/preferences/screensaver/hu.catkeys +++ b/data/catalogs/preferences/screensaver/hu.catkeys @@ -1,4 +1,4 @@ -1 hungarian x-vnd.Haiku-ScreenSaver 3630119516 +1 hungarian x-vnd.Haiku-ScreenSaver 232492478 Could not load screen saver ScreenSaver A képernyővédő betöltése sikertelen 30 seconds ScreenSaver 30 másodperc Start screensaver ScreenSaver Képernyővédő indítása @@ -11,7 +11,9 @@ Display Power Management Signaling not available ScreenSaver A kijelző energia ScreenSaver System name Képernyővédő Test ScreenSaver Próba General ScreenSaver Általános +Fade now when mouse is here ScreenSaver Bekapcsolás, ha az egér itt van Enable screensaver ScreenSaver Képernyővédő engedélyezése +Don't fade when mouse is here ScreenSaver Ne kapcsoljon be, ha az egér itt van Cancel ScreenSaver Mégse Turn off screen ScreenSaver Képernyő kikapcsolása No options available ScreenSaver Nincsenek elérhető beállítások diff --git a/data/catalogs/preferences/screensaver/ja.catkeys b/data/catalogs/preferences/screensaver/ja.catkeys index c247d6b..c1a0c1d 100644 --- a/data/catalogs/preferences/screensaver/ja.catkeys +++ b/data/catalogs/preferences/screensaver/ja.catkeys @@ -1,4 +1,4 @@ -1 japanese x-vnd.Haiku-ScreenSaver 3630119516 +1 japanese x-vnd.Haiku-ScreenSaver 232492478 Could not load screen saver ScreenSaver スクリーンセーバーを実行できませんでした 30 seconds ScreenSaver 30 秒 Start screensaver ScreenSaver スクリーンセーバーを開始 @@ -11,7 +11,9 @@ Display Power Management Signaling not available ScreenSaver DPMS (Display Powe ScreenSaver System name スクリーンセーバー Test ScreenSaver テスト General ScreenSaver 一般 +Fade now when mouse is here ScreenSaver マウスが指定の場所にあるときに画面を消す Enable screensaver ScreenSaver スクリーンセーバーを有効にする +Don't fade when mouse is here ScreenSaver マウスが指定の場所にあるとき画面を消さない Cancel ScreenSaver 取り消し Turn off screen ScreenSaver 画面を消す No options available ScreenSaver 設定がありません ############################################################################ Commit: 28390f696405bea8bebd66d0fa546be797043e81 Author: Jérôme Duval <jerome.duval@xxxxxxxxx> Date: Sat Sep 14 09:00:07 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:18 2013 UTC ext2: access the parent variable once checked it's non null * cleanup * add some inode flags we don't use ---------------------------------------------------------------------------- diff --git a/src/add-ons/kernel/file_systems/ext2/Inode.cpp b/src/add-ons/kernel/file_systems/ext2/Inode.cpp index 3a07a8c..e8a1529 100644 --- a/src/add-ons/kernel/file_systems/ext2/Inode.cpp +++ b/src/add-ons/kernel/file_systems/ext2/Inode.cpp @@ -633,8 +633,9 @@ Inode::Create(Transaction& transaction, Inode* parent, const char* name, inode->SetAccessTime(×pec); inode->SetCreationTime(×pec); inode->SetModificationTime(×pec); - node.SetFlags(parent->Flags() & EXT2_INODE_INHERITED); - if (volume->HasExtentsFeature() + if (parent != NULL) + node.SetFlags(parent->Flags() & EXT2_INODE_INHERITED); + if (volume->HasExtentsFeature() && (inode->IsDirectory() || inode->IsFile())) { node.SetFlag(EXT2_INODE_EXTENTS); ExtentStream stream(volume, &node.extent_stream, 0); @@ -935,4 +936,3 @@ Inode::IncrementNumLinks(Transaction& transaction) fVolume->ActivateDirNLink(transaction); } } - diff --git a/src/add-ons/kernel/file_systems/ext2/ext2.h b/src/add-ons/kernel/file_systems/ext2/ext2.h index b966e7c..2bc5f7f 100644 --- a/src/add-ons/kernel/file_systems/ext2/ext2.h +++ b/src/add-ons/kernel/file_systems/ext2/ext2.h @@ -141,13 +141,13 @@ struct ext2_super_block { { free_blocks = B_HOST_TO_LENDIAN_INT32(freeBlocks & 0xffffffff); if (has64bits) - free_blocks_high = B_HOST_TO_LENDIAN_INT32(freeBlocks >> 32); + free_blocks_high = B_HOST_TO_LENDIAN_INT32(freeBlocks >> 32); } void SetLastOrphan(ino_t id) { last_orphan = B_HOST_TO_LENDIAN_INT32((uint32)id); } void SetReadOnlyFeatures(uint32 readOnlyFeatures) const { readOnlyFeatures = B_HOST_TO_LENDIAN_INT32(readOnlyFeatures); } - + bool IsValid(); // implemented in Volume.cpp } _PACKED; @@ -211,7 +211,7 @@ struct ext2_block_group { uint32 _reserved[2]; uint16 unused_inodes; uint16 checksum; - + // ext4 uint32 block_bitmap_high; uint32 inode_bitmap_high; @@ -249,7 +249,7 @@ struct ext2_block_group { { uint32 blocks = B_LENDIAN_TO_HOST_INT16(free_blocks); if (has64bits) - blocks |= + blocks |= ((uint32)B_LENDIAN_TO_HOST_INT16(free_blocks_high) << 16); return blocks; } @@ -257,7 +257,7 @@ struct ext2_block_group { { uint32 inodes = B_LENDIAN_TO_HOST_INT16(free_inodes); if (has64bits) - inodes |= + inodes |= ((uint32)B_LENDIAN_TO_HOST_INT16(free_inodes_high) << 16); return inodes; } @@ -265,7 +265,7 @@ struct ext2_block_group { { uint32 dirs = B_LENDIAN_TO_HOST_INT16(used_directories); if (has64bits) - dirs |= + dirs |= ((uint32)B_LENDIAN_TO_HOST_INT16(used_directories_high) << 16); return dirs; } @@ -274,11 +274,11 @@ struct ext2_block_group { { uint32 inodes = B_LENDIAN_TO_HOST_INT16(unused_inodes); if (has64bits) - inodes |= + inodes |= ((uint32)B_LENDIAN_TO_HOST_INT16(unused_inodes_high) << 16); return inodes; } - + void SetFreeBlocks(uint32 freeBlocks, bool has64bits) { @@ -376,7 +376,7 @@ struct ext2_extent_entry { uint32 physical_block; uint32 LogicalBlock() const { return B_LENDIAN_TO_HOST_INT32(logical_block); } - uint16 Length() const { return B_LENDIAN_TO_HOST_INT16(length) == 0x8000 + uint16 Length() const { return B_LENDIAN_TO_HOST_INT16(length) == 0x8000 ? 0x8000 : B_LENDIAN_TO_HOST_INT16(length) & 0x7fff; } uint64 PhysicalBlock() const { return B_LENDIAN_TO_HOST_INT32(physical_block) | ((uint64)B_LENDIAN_TO_HOST_INT16(physical_block_high) << 32); } @@ -437,7 +437,7 @@ struct ext2_inode { uint16 uid_high; uint16 gid_high; uint32 _reserved2; - + // extra attributes uint16 extra_inode_size; uint16 _padding2; @@ -460,18 +460,18 @@ struct ext2_inode { { timespec->tv_sec = B_LENDIAN_TO_HOST_INT32(time); if (extra && sizeof(timespec->tv_sec) > 4) - timespec->tv_sec |= + timespec->tv_sec |= (uint64)(B_LENDIAN_TO_HOST_INT32(time_extra) & 0x2) << 32; if (extra) timespec->tv_nsec = B_LENDIAN_TO_HOST_INT32(time_extra) >> 2; else timespec->tv_nsec = 0; } - - void GetModificationTime(struct timespec *timespec, bool extra) const - { _DecodeTime(timespec, modification_time, modification_time_extra, + + void GetModificationTime(struct timespec *timespec, bool extra) const + { _DecodeTime(timespec, modification_time, modification_time_extra, extra); } - void GetAccessTime(struct timespec *timespec, bool extra) const + void GetAccessTime(struct timespec *timespec, bool extra) const { _DecodeTime(timespec, access_time, access_time_extra, extra); } void GetChangeTime(struct timespec *timespec, bool extra) const { _DecodeTime(timespec, change_time, change_time_extra, extra); } @@ -494,7 +494,7 @@ struct ext2_inode { time |= (uint64)timespec->tv_sec >> 32; return B_HOST_TO_LENDIAN_INT32(time); } - + void SetModificationTime(const struct timespec *timespec, bool extra) { modification_time = B_HOST_TO_LENDIAN_INT32((uint32)timespec->tv_sec); @@ -517,7 +517,7 @@ struct ext2_inode { { if (extra) { creation_time = B_HOST_TO_LENDIAN_INT32((uint32)timespec->tv_sec); - creation_time_extra = + creation_time_extra = B_HOST_TO_LENDIAN_INT32((uint32)timespec->tv_nsec); } } @@ -527,7 +527,7 @@ struct ext2_inode { } ino_t NextOrphan() const { return (ino_t)DeletionTime(); } - + off_t Size() const { if (S_ISREG(Mode())) { @@ -654,6 +654,10 @@ struct ext2_inode { #define EXT2_INODE_DIR_SYNCH 0x00010000 #define EXT2_INODE_HUGE_FILE 0x00040000 #define EXT2_INODE_EXTENTS 0x00080000 +#define EXT2_INODE_LARGE_EA 0x00200000 +#define EXT2_INODE_EOF_BLOCKS 0x00400000 +#define EXT2_INODE_INLINE_DATA 0x10000000 +#define EXT2_INODE_RESERVED 0x80000000 #define EXT2_INODE_INHERITED (EXT2_INODE_SECURE_DELETION | EXT2_INODE_UNDELETE \ | EXT2_INODE_COMPRESSED | EXT2_INODE_SYNCHRONOUS | EXT2_INODE_IMMUTABLE \ ############################################################################ Commit: a933ad6dbc4c65c3344084dcbc9ea6a2817e9c8c Author: Jérôme Duval <jerome.duval@xxxxxxxxx> Date: Sat Sep 14 09:48:37 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:18 2013 UTC virtio_net: initial skeleton driver. ---------------------------------------------------------------------------- diff --git a/src/add-ons/kernel/drivers/network/Jamfile b/src/add-ons/kernel/drivers/network/Jamfile index 2940c7e..224ba0c 100644 --- a/src/add-ons/kernel/drivers/network/Jamfile +++ b/src/add-ons/kernel/drivers/network/Jamfile @@ -9,6 +9,7 @@ SubInclude HAIKU_TOP src add-ons kernel drivers network usb_asix ; SubInclude HAIKU_TOP src add-ons kernel drivers network usb_davicom ; SubInclude HAIKU_TOP src add-ons kernel drivers network usb_ecm ; SubInclude HAIKU_TOP src add-ons kernel drivers network via_rhine ; +SubInclude HAIKU_TOP src add-ons kernel drivers network virtio ; SubInclude HAIKU_TOP src add-ons kernel drivers network vlance ; SubInclude HAIKU_TOP src add-ons kernel drivers network wb840 ; diff --git a/src/add-ons/kernel/drivers/network/virtio/Jamfile b/src/add-ons/kernel/drivers/network/virtio/Jamfile new file mode 100644 index 0000000..f813111 --- /dev/null +++ b/src/add-ons/kernel/drivers/network/virtio/Jamfile @@ -0,0 +1,8 @@ +SubDir HAIKU_TOP src add-ons kernel drivers network virtio ; + +UsePrivateKernelHeaders ; +UsePrivateHeaders drivers net virtio ; + +KernelAddon virtio_net : + virtio_net.cpp +; diff --git a/src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp b/src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp new file mode 100644 index 0000000..92801fe --- /dev/null +++ b/src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp @@ -0,0 +1,317 @@ +/* + * Copyright 2013, Jérôme Duval, korli@xxxxxxxxxxxxxxxx. + * Distributed under the terms of the MIT License. + */ + + +#include <ethernet.h> +#include <virtio.h> + +#define ETHER_ADDR_LEN ETHER_ADDRESS_LENGTH +#include "virtio_net.h" + + + +#define VIRTIO_NET_DRIVER_MODULE_NAME "drivers/network/virtio_net/driver_v1" +#define VIRTIO_NET_DEVICE_MODULE_NAME "drivers/network/virtio_net/device_v1" +#define VIRTIO_NET_DEVICE_ID_GENERATOR "virtio_net/device_id" + + +typedef struct { + device_node* node; + ::virtio_device virtio_device; + virtio_device_interface* virtio; + + uint32 features; + +} virtio_net_driver_info; + + +typedef struct { + virtio_net_driver_info* info; +} virtio_net_handle; + + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include <fs/devfs.h> + + +#define TRACE_VIRTIO_NET +#ifdef TRACE_VIRTIO_NET +# define TRACE(x...) dprintf("virtio_net: " x) +#else +# define TRACE(x...) ; +#endif +#define ERROR(x...) dprintf("\33[33mvirtio_net:\33[0m " x) +#define CALLED() TRACE("CALLED %s\n", __PRETTY_FUNCTION__) + + +static device_manager_info* sDeviceManager; + + +const char * +get_feature_name(uint32 feature) +{ + switch (feature) { + } + return NULL; +} + + +// #pragma mark - device module API + + +static status_t +virtio_net_init_device(void* _info, void** _cookie) +{ + CALLED(); + virtio_net_driver_info* info = (virtio_net_driver_info*)_info; + + device_node* parent = sDeviceManager->get_parent_node(info->node); + sDeviceManager->get_driver(parent, (driver_module_info **)&info->virtio, + (void **)&info->virtio_device); + sDeviceManager->put_node(parent); + + info->virtio->negociate_features(info->virtio_device, + 0, &info->features, &get_feature_name); + + // TODO read config + // TODO alloc queues and setup interrupts + + *_cookie = info; + return B_OK; +} + + +static void +virtio_net_uninit_device(void* _cookie) +{ + CALLED(); + virtio_net_driver_info* info = (virtio_net_driver_info*)_cookie; +} + + +static status_t +virtio_net_open(void* _info, const char* path, int openMode, void** _cookie) +{ + CALLED(); + virtio_net_driver_info* info = (virtio_net_driver_info*)_info; + + virtio_net_handle* handle = (virtio_net_handle*)malloc( + sizeof(virtio_net_handle)); + if (handle == NULL) + return B_NO_MEMORY; + + handle->info = info; + + *_cookie = handle; + return B_OK; +} + + +static status_t +virtio_net_close(void* cookie) +{ + //virtio_net_handle* handle = (virtio_net_handle*)cookie; + CALLED(); + + return B_OK; +} + + +static status_t +virtio_net_free(void* cookie) +{ + CALLED(); + virtio_net_handle* handle = (virtio_net_handle*)cookie; + + free(handle); + return B_OK; +} + + +static status_t +virtio_net_read(void* cookie, off_t pos, void* buffer, size_t* _length) +{ + CALLED(); + virtio_net_handle* handle = (virtio_net_handle*)cookie; + // TODO implement + return B_ERROR; +} + + +static status_t +virtio_net_write(void* cookie, off_t pos, const void* buffer, + size_t* _length) +{ + CALLED(); + virtio_net_handle* handle = (virtio_net_handle*)cookie; + // TODO implement + return B_ERROR; +} + + +static status_t +virtio_net_ioctl(void* cookie, uint32 op, void* buffer, size_t length) +{ + CALLED(); + virtio_net_handle* handle = (virtio_net_handle*)cookie; + virtio_net_driver_info* info = handle->info; + + TRACE("ioctl(op = %ld)\n", op); + + switch (op) { + } + + return B_DEV_INVALID_IOCTL; +} + + +// #pragma mark - driver module API + + +static float +virtio_net_supports_device(device_node *parent) +{ + CALLED(); + const char *bus; + uint16 deviceType; + + // make sure parent is really the Virtio bus manager + if (sDeviceManager->get_attr_string(parent, B_DEVICE_BUS, &bus, false)) + return -1; + + if (strcmp(bus, "virtio")) + return 0.0; + + // check whether it's really a Direct Access Device + if (sDeviceManager->get_attr_uint16(parent, VIRTIO_DEVICE_TYPE_ITEM, + &deviceType, true) != B_OK || deviceType != VIRTIO_DEVICE_ID_NETWORK) + return 0.0; + + TRACE("Virtio network device found!\n"); + + return 0.6; +} + + +static status_t +virtio_net_register_device(device_node *node) +{ + CALLED(); + + // ready to register + device_attr attrs[] = { + { NULL } + }; + + return sDeviceManager->register_node(node, VIRTIO_NET_DRIVER_MODULE_NAME, + attrs, NULL, NULL); +} + + +static status_t +virtio_net_init_driver(device_node *node, void **cookie) +{ + CALLED(); + + virtio_net_driver_info* info = (virtio_net_driver_info*)malloc( + sizeof(virtio_net_driver_info)); + if (info == NULL) + return B_NO_MEMORY; + + memset(info, 0, sizeof(*info)); + + info->node = node; + + *cookie = info; + return B_OK; +} + + +static void +virtio_net_uninit_driver(void *_cookie) +{ + CALLED(); + virtio_net_driver_info* info = (virtio_net_driver_info*)_cookie; + free(info); +} + + +static status_t +virtio_net_register_child_devices(void* _cookie) +{ + CALLED(); + virtio_net_driver_info* info = (virtio_net_driver_info*)_cookie; + status_t status; + + int32 id = sDeviceManager->create_id(VIRTIO_NET_DEVICE_ID_GENERATOR); + if (id < 0) + return id; + + char name[64]; + snprintf(name, sizeof(name), "net/virtio/%" B_PRId32, + id); + + status = sDeviceManager->publish_device(info->node, name, + VIRTIO_NET_DEVICE_MODULE_NAME); + + return status; +} + + +// #pragma mark - + + +module_dependency module_dependencies[] = { + {B_DEVICE_MANAGER_MODULE_NAME, (module_info**)&sDeviceManager}, + {} +}; + +struct device_module_info sVirtioNetDevice = { + { + VIRTIO_NET_DEVICE_MODULE_NAME, + 0, + NULL + }, + + virtio_net_init_device, + virtio_net_uninit_device, + NULL, // remove, + + virtio_net_open, + virtio_net_close, + virtio_net_free, + virtio_net_read, + virtio_net_write, + NULL, // io + virtio_net_ioctl, + + NULL, // select + NULL, // deselect +}; + +struct driver_module_info sVirtioNetDriver = { + { + VIRTIO_NET_DRIVER_MODULE_NAME, + 0, + NULL + }, + + virtio_net_supports_device, + virtio_net_register_device, + virtio_net_init_driver, + virtio_net_uninit_driver, + virtio_net_register_child_devices, + NULL, // rescan + NULL, // removed +}; + +module_info* modules[] = { + (module_info*)&sVirtioNetDriver, + (module_info*)&sVirtioNetDevice, + NULL +}; diff --git a/src/add-ons/kernel/drivers/network/virtio/virtio_net.h b/src/add-ons/kernel/drivers/network/virtio/virtio_net.h new file mode 100644 index 0000000..315b730 --- /dev/null +++ b/src/add-ons/kernel/drivers/network/virtio/virtio_net.h @@ -0,0 +1,202 @@ +/*- + * This header is BSD licensed so anyone can use the definitions to implement + * compatible drivers/servers. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of IBM nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _VIRTIO_NET_H +#define _VIRTIO_NET_H + +/* The feature bitmap for virtio net */ +#define VIRTIO_NET_F_CSUM 0x00001 /* Host handles pkts w/ partial csum */ +#define VIRTIO_NET_F_GUEST_CSUM 0x00002 /* Guest handles pkts w/ partial csum*/ +#define VIRTIO_NET_F_MAC 0x00020 /* Host has given MAC address. */ +#define VIRTIO_NET_F_GSO 0x00040 /* Host handles pkts w/ any GSO type */ +#define VIRTIO_NET_F_GUEST_TSO4 0x00080 /* Guest can handle TSOv4 in. */ +#define VIRTIO_NET_F_GUEST_TSO6 0x00100 /* Guest can handle TSOv6 in. */ +#define VIRTIO_NET_F_GUEST_ECN 0x00200 /* Guest can handle TSO[6] w/ ECN in.*/ +#define VIRTIO_NET_F_GUEST_UFO 0x00400 /* Guest can handle UFO in. */ +#define VIRTIO_NET_F_HOST_TSO4 0x00800 /* Host can handle TSOv4 in. */ +#define VIRTIO_NET_F_HOST_TSO6 0x01000 /* Host can handle TSOv6 in. */ +#define VIRTIO_NET_F_HOST_ECN 0x02000 /* Host can handle TSO[6] w/ ECN in. */ +#define VIRTIO_NET_F_HOST_UFO 0x04000 /* Host can handle UFO in. */ +#define VIRTIO_NET_F_MRG_RXBUF 0x08000 /* Host can merge receive buffers. */ +#define VIRTIO_NET_F_STATUS 0x10000 /* virtio_net_config.status available*/ +#define VIRTIO_NET_F_CTRL_VQ 0x20000 /* Control channel available */ +#define VIRTIO_NET_F_CTRL_RX 0x40000 /* Control channel RX mode support */ +#define VIRTIO_NET_F_CTRL_VLAN 0x80000 /* Control channel VLAN filtering */ +#define VIRTIO_NET_F_CTRL_RX_EXTRA 0x100000 /* Extra RX mode control support */ +#define VIRTIO_NET_F_GUEST_ANNOUNCE 0x200000 /* Announce device on network */ +#define VIRTIO_NET_F_MQ 0x400000 /* Device supports RFS */ +#define VIRTIO_NET_F_CTRL_MAC_ADDR 0x800000 /* Set MAC address */ + +#define VIRTIO_NET_S_LINK_UP 1 /* Link is up */ + +struct virtio_net_config { + /* The config defining mac address (if VIRTIO_NET_F_MAC) */ + uint8_t mac[ETHER_ADDR_LEN]; + /* See VIRTIO_NET_F_STATUS and VIRTIO_NET_S_* above */ + uint16_t status; + /* Maximum number of each of transmit and receive queues; + * see VIRTIO_NET_F_MQ and VIRTIO_NET_CTRL_MQ. + * Legal values are between 1 and 0x8000. + */ + uint16_t max_virtqueue_pairs; +} _PACKED; + +/* + * This is the first element of the scatter-gather list. If you don't + * specify GSO or CSUM features, you can simply ignore the header. + */ +struct virtio_net_hdr { +#define VIRTIO_NET_HDR_F_NEEDS_CSUM 1 /* Use csum_start,csum_offset*/ +#define VIRTIO_NET_HDR_F_DATA_VALID 2 /* Csum is valid */ + uint8_t flags; +#define VIRTIO_NET_HDR_GSO_NONE 0 /* Not a GSO frame */ +#define VIRTIO_NET_HDR_GSO_TCPV4 1 /* GSO frame, IPv4 TCP (TSO) */ +#define VIRTIO_NET_HDR_GSO_UDP 3 /* GSO frame, IPv4 UDP (UFO) */ +#define VIRTIO_NET_HDR_GSO_TCPV6 4 /* GSO frame, IPv6 TCP */ +#define VIRTIO_NET_HDR_GSO_ECN 0x80 /* TCP has ECN set */ + uint8_t gso_type; + uint16_t hdr_len; /* Ethernet + IP + tcp/udp hdrs */ + uint16_t gso_size; /* Bytes to append to hdr_len per frame */ + uint16_t csum_start; /* Position to start checksumming from */ + uint16_t csum_offset; /* Offset after that to place checksum */ +}; + +/* + * This is the version of the header to use when the MRG_RXBUF + * feature has been negotiated. + */ +struct virtio_net_hdr_mrg_rxbuf { + struct virtio_net_hdr hdr; + uint16_t num_buffers; /* Number of merged rx buffers */ +}; + +/* + * Control virtqueue data structures + * + * The control virtqueue expects a header in the first sg entry + * and an ack/status response in the last entry. Data for the + * command goes in between. + */ +struct virtio_net_ctrl_hdr { + uint8_t net_class; // was renamed from class for c++ + uint8_t cmd; +} _PACKED; + +#define VIRTIO_NET_OK 0 +#define VIRTIO_NET_ERR 1 + +/* + * Control the RX mode, ie. promiscuous, allmulti, etc... + * All commands require an "out" sg entry containing a 1 byte + * state value, zero = disable, non-zero = enable. Commands + * 0 and 1 are supported with the VIRTIO_NET_F_CTRL_RX feature. + * Commands 2-5 are added with VIRTIO_NET_F_CTRL_RX_EXTRA. + */ +#define VIRTIO_NET_CTRL_RX 0 +#define VIRTIO_NET_CTRL_RX_PROMISC 0 +#define VIRTIO_NET_CTRL_RX_ALLMULTI 1 +#define VIRTIO_NET_CTRL_RX_ALLUNI 2 +#define VIRTIO_NET_CTRL_RX_NOMULTI 3 +#define VIRTIO_NET_CTRL_RX_NOUNI 4 +#define VIRTIO_NET_CTRL_RX_NOBCAST 5 + +/* + * Control the MAC filter table. + * + * The MAC filter table is managed by the hypervisor, the guest should + * assume the size is infinite. Filtering should be considered + * non-perfect, ie. based on hypervisor resources, the guest may + * received packets from sources not specified in the filter list. + * + * In addition to the class/cmd header, the TABLE_SET command requires + * two out scatterlists. Each contains a 4 byte count of entries followed + * by a concatenated byte stream of the ETH_ALEN MAC addresses. The + * first sg list contains unicast addresses, the second is for multicast. + * This functionality is present if the VIRTIO_NET_F_CTRL_RX feature + * is available. + * + * The ADDR_SET command requests one out scatterlist, it contains a + * 6 bytes MAC address. This functionality is present if the + * VIRTIO_NET_F_CTRL_MAC_ADDR feature is available. + */ +struct virtio_net_ctrl_mac { + uint32_t entries; + uint8_t macs[][ETHER_ADDR_LEN]; +} _PACKED; + +#define VIRTIO_NET_CTRL_MAC 1 +#define VIRTIO_NET_CTRL_MAC_TABLE_SET 0 +#define VIRTIO_NET_CTRL_MAC_ADDR_SET 1 + +/* + * Control VLAN filtering + * + * The VLAN filter table is controlled via a simple ADD/DEL interface. + * VLAN IDs not added may be filtered by the hypervisor. Del is the + * opposite of add. Both commands expect an out entry containing a 2 + * byte VLAN ID. VLAN filtering is available with the + * VIRTIO_NET_F_CTRL_VLAN feature bit. + */ +#define VIRTIO_NET_CTRL_VLAN 2 +#define VIRTIO_NET_CTRL_VLAN_ADD 0 +#define VIRTIO_NET_CTRL_VLAN_DEL 1 + +/* + * Control link announce acknowledgement + * + * The command VIRTIO_NET_CTRL_ANNOUNCE_ACK is used to indicate that + * driver has recevied the notification; device would clear the + * VIRTIO_NET_S_ANNOUNCE bit in the status field after it receives + * this command. + */ +#define VIRTIO_NET_CTRL_ANNOUNCE 3 +#define VIRTIO_NET_CTRL_ANNOUNCE_ACK 0 + +/* + * Control Receive Flow Steering + * + * The command VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET enables Receive Flow + * Steering, specifying the number of the transmit and receive queues + * that will be used. After the command is consumed and acked by the + * device, the device will not steer new packets on receive virtqueues + * other than specified nor read from transmit virtqueues other than + * specified. Accordingly, driver should not transmit new packets on + * virtqueues other than specified. + */ +struct virtio_net_ctrl_mq { + uint16_t virtqueue_pairs; +} _PACKED; + +#define VIRTIO_NET_CTRL_MQ 4 +#define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET 0 +#define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN 1 +#define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX 0x8000 + +#endif /* _VIRTIO_NET_H */ ############################################################################ Commit: 5594217b7f252284955547636a6edcc97dbd214d Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Sat Sep 14 15:07:55 2013 UTC Fix accidentally truncated addresses in call frame unwind. ---------------------------------------------------------------------------- diff --git a/src/apps/debugger/arch/x86_64/ArchitectureX8664.cpp b/src/apps/debugger/arch/x86_64/ArchitectureX8664.cpp index 0922808..73bd4a5 100644 --- a/src/apps/debugger/arch/x86_64/ArchitectureX8664.cpp +++ b/src/apps/debugger/arch/x86_64/ArchitectureX8664.cpp @@ -315,8 +315,8 @@ ArchitectureX8664::CreateStackFrame(Image* image, FunctionDebugInfo* function, // The syscall stubs are frameless, the return address is on top of the // stack. - uint32 rsp = cpuState->IntRegisterValue(X86_64_REGISTER_RSP); - uint32 address; + uint64 rsp = cpuState->IntRegisterValue(X86_64_REGISTER_RSP); + uint64 address; if (fTeamMemory->ReadMemory(rsp, &address, 8) == 8) { returnAddress = address; previousFramePointer = framePointer; ############################################################################ Commit: 672b2600bca6c06ecdeae9739b8141265f6afebe Author: Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> Date: Sat Sep 14 15:23:04 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:19 2013 UTC ARM: kernel: Fix compilation issue with new gas. Turns out the new gas does not like spaces :( ---------------------------------------------------------------------------- diff --git a/src/system/kernel/arch/arm/arch_asm.S b/src/system/kernel/arch/arm/arch_asm.S index eb570a5..689f615 100644 --- a/src/system/kernel/arch/arm/arch_asm.S +++ b/src/system/kernel/arch/arm/arch_asm.S @@ -227,8 +227,8 @@ FUNCTION(arch_debug_call_with_fault_handler): // Set fault handler address, and fault handler stack pointer address. We // don't need to save the previous values, since that's done by the caller. ldr r4, =1f - str r4, [ r0, #CPU_ENT_fault_handler ] - str sp, [ r0, #CPU_ENT_fault_handler_stack_pointer ] + str r4, [r0, #CPU_ENT_fault_handler] + str sp, [r0, #CPU_ENT_fault_handler_stack_pointer] mov r4, r1 // call the function ############################################################################ Commit: 1ea8fd5216a6c2c7b48efc1f4f5f774864fc8692 Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Sat Sep 14 15:46:00 2013 UTC Debugger: Add missing std::nothrow. ---------------------------------------------------------------------------- diff --git a/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp b/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp index 113c6cb..b3cd434 100644 --- a/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp +++ b/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp @@ -2103,7 +2103,7 @@ status_t VariablesView::_AddContextAction(const char* action, uint32 what, ContextActionList* actions, BMessage*& _message) { - _message = new BMessage(what); + _message = new(std::nothrow) BMessage(what); if (_message == NULL) return B_NO_MEMORY; ############################################################################ Commit: 5077cb09cb7a05a873599df1f8bf1dbfcdc60d75 Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Sat Sep 14 15:53:54 2013 UTC Debugger: add Inspect context item to Registers view. - Allows one to treat the value of a register as a memory address and jump directly to inspecting said address. ---------------------------------------------------------------------------- diff --git a/src/apps/debugger/user_interface/gui/team_window/RegistersView.cpp b/src/apps/debugger/user_interface/gui/team_window/RegistersView.cpp index 239b6f5..031bb6b 100644 --- a/src/apps/debugger/user_interface/gui/team_window/RegistersView.cpp +++ b/src/apps/debugger/user_interface/gui/team_window/RegistersView.cpp @@ -1,6 +1,6 @@ /* * Copyright 2009-2012, Ingo Weinhold, ingo_weinhold@xxxxxx. - * Copyright 2011, Rene Gollent, rene@xxxxxxxxxxx. + * Copyright 2011-2013, Rene Gollent, rene@xxxxxxxxxxx. * Distributed under the terms of the MIT License. */ @@ -11,12 +11,17 @@ #include <new> #include <ControlLook.h> +#include <MenuItem.h> +#include <PopUpMenu.h> +#include <Window.h> #include "table/TableColumns.h" #include "Architecture.h" +#include "AutoDeleter.h" #include "CpuState.h" #include "GuiSettingsUtils.h" +#include "MessageCodes.h" #include "Register.h" #include "UiUtils.h" @@ -230,6 +235,48 @@ RegistersView::TableRowInvoked(Table* table, int32 rowIndex) void +RegistersView::TableCellMouseDown(Table* table, int32 rowIndex, + int32 columnIndex, BPoint screenWhere, uint32 buttons) +{ + if ((buttons & B_SECONDARY_MOUSE_BUTTON) == 0) + return; + + BVariant value; + if (!fRegisterTableModel->GetValueAt(rowIndex, columnIndex, value)) + return; + + BPopUpMenu* menu = new(std::nothrow)BPopUpMenu("Options"); + if (menu == NULL) + return; + + ObjectDeleter<BPopUpMenu> menuDeleter(menu); + BMessage* message = new(std::nothrow)BMessage(MSG_SHOW_INSPECTOR_WINDOW); + if (message == NULL) + return; + + message->AddUInt64("address", value.ToUInt64()); + + ObjectDeleter<BMessage> messageDeleter(message); + BMenuItem* item = new(std::nothrow)BMenuItem("Inspect", message); + if (item == NULL) + return; + + messageDeleter.Detach(); + ObjectDeleter<BMenuItem> itemDeleter(item); + if (!menu->AddItem(item)) + return; + + itemDeleter.Detach(); + menu->SetTargetForItems(Window()); + menuDeleter.Detach(); + + BRect mouseRect(screenWhere, screenWhere); + mouseRect.InsetBy(-4.0, -4.0); + menu->Go(screenWhere, true, false, mouseRect, true); +} + + +void RegistersView::_Init() { fRegisterTable = new Table("register list", 0, B_FANCY_BORDER); diff --git a/src/apps/debugger/user_interface/gui/team_window/RegistersView.h b/src/apps/debugger/user_interface/gui/team_window/RegistersView.h index 8c68092..e3c0b27 100644 --- a/src/apps/debugger/user_interface/gui/team_window/RegistersView.h +++ b/src/apps/debugger/user_interface/gui/team_window/RegistersView.h @@ -1,5 +1,6 @@ /* * Copyright 2009, Ingo Weinhold, ingo_weinhold@xxxxxx. + * Copyright 2013, Rene Gollent, rene@xxxxxxxxxxx. * Distributed under the terms of the MIT License. */ #ifndef REGISTERS_VIEW_H @@ -35,6 +36,10 @@ private: // TableListener virtual void TableRowInvoked(Table* table, int32 rowIndex); + virtual void TableCellMouseDown(Table* table, int32 rowIndex, + int32 columnIndex, BPoint screenWhere, + uint32 buttons); + void _Init(); private: ############################################################################ Commit: eb8616334b07e50fe041f0011abd25956b858e56 Author: Jérôme Duval <jerome.duval@xxxxxxxxx> Date: Sat Sep 14 13:37:24 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:20 2013 UTC virtio_net: add feature labels. ---------------------------------------------------------------------------- diff --git a/src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp b/src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp index 92801fe..1c9fe19 100644 --- a/src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp +++ b/src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp @@ -56,6 +56,48 @@ const char * get_feature_name(uint32 feature) { switch (feature) { + case VIRTIO_NET_F_CSUM: + return "host checksum"; + case VIRTIO_NET_F_GUEST_CSUM: + return "guest checksum"; + case VIRTIO_NET_F_MAC: + return "macaddress"; + case VIRTIO_NET_F_GSO: + return "host allgso"; + case VIRTIO_NET_F_GUEST_TSO4: + return "guest tso4"; + case VIRTIO_NET_F_GUEST_TSO6: + return "guest tso6"; + case VIRTIO_NET_F_GUEST_ECN: + return "guest tso6+ecn"; + case VIRTIO_NET_F_GUEST_UFO: + return "guest ufo"; + case VIRTIO_NET_F_HOST_TSO4: + return "host tso4"; + case VIRTIO_NET_F_HOST_TSO6: + return "host tso6"; + case VIRTIO_NET_F_HOST_ECN: + return "host tso6+ecn"; + case VIRTIO_NET_F_HOST_UFO: + return "host UFO"; + case VIRTIO_NET_F_MRG_RXBUF: + return "host mergerxbuffers"; + case VIRTIO_NET_F_STATUS: + return "status"; + case VIRTIO_NET_F_CTRL_VQ: + return "control vq"; + case VIRTIO_NET_F_CTRL_RX: + return "rx mode"; + case VIRTIO_NET_F_CTRL_VLAN: + return "vlan filter"; + case VIRTIO_NET_F_CTRL_RX_EXTRA: + return "rx mode extra"; + case VIRTIO_NET_F_GUEST_ANNOUNCE: + return "guest announce"; + case VIRTIO_NET_F_MQ: + return "multiqueue"; + case VIRTIO_NET_F_CTRL_MAC_ADDR: + return "set macaddress"; } return NULL; } @@ -76,7 +118,7 @@ virtio_net_init_device(void* _info, void** _cookie) sDeviceManager->put_node(parent); info->virtio->negociate_features(info->virtio_device, - 0, &info->features, &get_feature_name); + 0 /* */, &info->features, &get_feature_name); // TODO read config // TODO alloc queues and setup interrupts ############################################################################ Commit: 28cf626d45e65e0c1c5a2919f7a471425ee2a1ad Author: Jérôme Duval <jerome.duval@xxxxxxxxx> Date: Sat Sep 14 16:01:41 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:21 2013 UTC virtio_net: allocate queues, read macaddress, handle ioctl. ---------------------------------------------------------------------------- diff --git a/src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp b/src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp index 1c9fe19..4a6a66e 100644 --- a/src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp +++ b/src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp @@ -7,10 +7,14 @@ #include <ethernet.h> #include <virtio.h> +#include <net/if_media.h> +#include <new> + +#include "ether_driver.h" #define ETHER_ADDR_LEN ETHER_ADDRESS_LENGTH #include "virtio_net.h" - +#define MAX_FRAME_SIZE 1536 #define VIRTIO_NET_DRIVER_MODULE_NAME "drivers/network/virtio_net/driver_v1" #define VIRTIO_NET_DEVICE_MODULE_NAME "drivers/network/virtio_net/device_v1" @@ -24,6 +28,15 @@ typedef struct { uint32 features; + uint32 pairs_count; + ::virtio_queue* receive_queues; + ::virtio_queue* send_queues; + + + bool nonblocking; + uint32 maxframesize; + uint8 macaddr[6]; + } virtio_net_driver_info; @@ -120,8 +133,41 @@ virtio_net_init_device(void* _info, void** _cookie) info->virtio->negociate_features(info->virtio_device, 0 /* */, &info->features, &get_feature_name); + if ((info->features & VIRTIO_NET_F_MQ) != 0 + && info->virtio->read_device_config(info->virtio_device, + offsetof(struct virtio_net_config, max_virtqueue_pairs), + &info->pairs_count, sizeof(info->pairs_count)) == B_OK) { + system_info sysinfo; + if (get_system_info(&sysinfo) == B_OK + && info->pairs_count > sysinfo.cpu_count) { + info->pairs_count = sysinfo.cpu_count; + } + } else + info->pairs_count = 1; + // TODO read config - // TODO alloc queues and setup interrupts + + uint32 queueCount = info->pairs_count * 2; + if ((info->features & VIRTIO_NET_F_CTRL_VQ) != 0) + queueCount++; + ::virtio_queue virtioQueues[queueCount]; + status_t status = info->virtio->alloc_queues(info->virtio_device, queueCount, + virtioQueues); + if (status != B_OK) { + ERROR("queue allocation failed (%s)\n", strerror(status)); + return status; + } + + info->receive_queues = new(std::nothrow) virtio_queue[info->pairs_count]; + info->send_queues = new(std::nothrow) virtio_queue[info->pairs_count]; + if (info->receive_queues == NULL || info->receive_queues == NULL) + return B_NO_MEMORY; + for (uint32 i = 0; i < info->pairs_count; i++) { + info->receive_queues[i] = virtioQueues[i * 2]; + info->send_queues[i] = virtioQueues[i * 2 + 1]; + } + + // TODO setup interrupts *_cookie = info; return B_OK; @@ -147,8 +193,16 @@ virtio_net_open(void* _info, const char* path, int openMode, void** _cookie) if (handle == NULL) return B_NO_MEMORY; + info->nonblocking = (openMode & O_NONBLOCK) != 0; + info->maxframesize = MAX_FRAME_SIZE; handle->info = info; + if ((info->features & VIRTIO_NET_F_MAC) != 0) { + info->virtio->read_device_config(info->virtio_device, + offsetof(struct virtio_net_config, mac), + &info->macaddr, sizeof(info->macaddr)); + } + *_cookie = handle; return B_OK; } @@ -203,11 +257,60 @@ virtio_net_ioctl(void* cookie, uint32 op, void* buffer, size_t length) virtio_net_handle* handle = (virtio_net_handle*)cookie; virtio_net_driver_info* info = handle->info; - TRACE("ioctl(op = %ld)\n", op); + TRACE("ioctl(op = %lx)\n", op); switch (op) { + case ETHER_GETADDR: + TRACE("ioctl: get macaddr\n"); + memcpy(buffer, &info->macaddr, sizeof(info->macaddr)); + return B_OK; + + case ETHER_INIT: + TRACE("ioctl: init\n"); + return B_OK; + + case ETHER_GETFRAMESIZE: + TRACE("ioctl: get frame size\n"); + *(uint32*)buffer = info->maxframesize; + return B_OK; + + case ETHER_SETPROMISC: + TRACE("ioctl: set promisc\n"); + break; + + case ETHER_NONBLOCK: + info->nonblocking = *(int32 *)buffer == 0; + TRACE("ioctl: non blocking ? %s\n", info->nonblocking ? "yes" : "no"); + return B_OK; + + case ETHER_ADDMULTI: + TRACE("ioctl: add multicast\n"); + break; + + case ETHER_GET_LINK_STATE: + { + TRACE("ioctl: get link state\n"); + ether_link_state_t state; + uint16 status = VIRTIO_NET_S_LINK_UP; + if ((info->features & VIRTIO_NET_F_STATUS) != 0) { + info->virtio->read_device_config(info->virtio_device, + offsetof(struct virtio_net_config, status), + &status, sizeof(status)); + } + state.media = ((status & VIRTIO_NET_S_LINK_UP) != 0 ? IFM_ACTIVE : 0) + | IFM_ETHER | IFM_FULL_DUPLEX | IFM_10G_T; + state.speed = 10000000000ULL; + state.quality = 1000; + + return user_memcpy(buffer, &state, sizeof(ether_link_state_t)); + } + + default: + ERROR("ioctl: unknown message %" B_PRIx32 "\n", op); + break; } + return B_DEV_INVALID_IOCTL; } ############################################################################ Commit: 5a2c5827e4c0360ed36eddb24b759872d685ed40 Author: Jérôme Duval <jerome.duval@xxxxxxxxx> Date: Sat Sep 14 16:11:43 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:21 2013 UTC add a constant for 10G base T ethernet. ---------------------------------------------------------------------------- diff --git a/headers/posix/net/if_media.h b/headers/posix/net/if_media.h index e0fdc4e..ca67cf6 100644 --- a/headers/posix/net/if_media.h +++ b/headers/posix/net/if_media.h @@ -31,6 +31,7 @@ #define IFM_100_TX 6 /* 100Base-TX - RJ45 */ #define IFM_1000_T 16 /* 1000Base-T - RJ45 */ #define IFM_1000_SX 18 /* 1000Base-SX - Fiber Optic */ +#define IFM_10G_T 22 /* 10GBase-T - RJ45 */ /* General options */ diff --git a/src/bin/network/ifconfig/ifconfig.cpp b/src/bin/network/ifconfig/ifconfig.cpp index e103055..bd36e3c 100644 --- a/src/bin/network/ifconfig/ifconfig.cpp +++ b/src/bin/network/ifconfig/ifconfig.cpp @@ -105,6 +105,7 @@ static const media_type kMediaTypes[] = { { IFM_100_TX, "100baseTX", "100 MBit, 100BASE-TX" }, { IFM_1000_T, "1000baseT", "1 GBit, 1000BASE-T" }, { IFM_1000_SX, "1000baseSX", "1 GBit, 1000BASE-SX" }, + { IFM_10G_T, "10GbaseT", "10 GBit, 10GBASE-T" }, { -1, NULL, NULL } }, { @@ -1012,4 +1013,3 @@ main(int argc, char** argv) list_interfaces(name); return 0; } - ############################################################################ Commit: acd58c2f6c9778fd8fea213a94dd709220256406 Author: Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> Date: Sat Sep 14 18:13:36 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:21 2013 UTC ARM: boot: Make dd on MacOS happy Turns out dd on MacOS does not like '1M' as size descriptor, but wants '1m'. To prevent us breaking Linux builds (as it does not accept 1m), just use the actual number of bytes explicitely instead. ---------------------------------------------------------------------------- diff --git a/src/system/boot/platform/u-boot/Jamfile b/src/system/boot/platform/u-boot/Jamfile index f8fe507..7ce4ed8 100644 --- a/src/system/boot/platform/u-boot/Jamfile +++ b/src/system/boot/platform/u-boot/Jamfile @@ -151,7 +151,7 @@ actions BuildUImageScript1 rule BuildUBootSDImage image : files { Depends $(image) : $(files) ; - SDIMAGE_BLOCK_SIZE on $(image) = 1M ; + SDIMAGE_BLOCK_SIZE on $(image) = 1048576 ; # 1M SDIMAGE_SIZE on $(image) = $(HAIKU_BOARD_SDIMAGE_SIZE) ; SDIMAGE_FDISK on $(image) = $(HOST_SFDISK) ; SDIMAGE_FDISK_SCRIPT on $(image) = ############################################################################ Commit: a7e9ce676fb1c4f4ade5e8dfc1b43053c035dbbc Author: John Scipione <jscipione@xxxxxxxxx> Date: Sat Sep 14 18:55:53 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:22 2013 UTC Use uname -s instead of uname -o ...since BSD uname (on OS X at least) doesn't have a -o param, only a -s, Haiku has both, and both print "Haiku". ---------------------------------------------------------------------------- diff --git a/build/scripts/build_cross_tools b/build/scripts/build_cross_tools index 18f52a7..19e0ee3 100755 --- a/build/scripts/build_cross_tools +++ b/build/scripts/build_cross_tools @@ -20,7 +20,7 @@ additionalMakeArgs=$* # additional flags for the binutils build. Should there ever be any other # flags than -jN, we need to handle this differently. -if [ `uname -o` = 'Haiku' ]; then +if [ `uname -s` = 'Haiku' ]; then # force cross-build if building on Haiku: buildhostMachine=i586-pc-haiku_buildhost buildHostSpec="--build=$buildhostMachine --host=$buildhostMachine" diff --git a/build/scripts/build_cross_tools_gcc4 b/build/scripts/build_cross_tools_gcc4 index 51f89de..c418bb0 100755 --- a/build/scripts/build_cross_tools_gcc4 +++ b/build/scripts/build_cross_tools_gcc4 @@ -40,7 +40,7 @@ arm-*) ;; esac -if [ `uname -o` = 'Haiku' ]; then +if [ `uname -s` = 'Haiku' ]; then # force cross-build if building on Haiku: buildhostMachine=${haikuMachine}_buildhost buildHostSpec="--build=$buildhostMachine --host=$buildhostMachine" ############################################################################ Commit: 736c1f8c5160c2dafcbbcc5bafe72e00c1a16f1e Author: Jorma Karvonen <karvonen.jorma@xxxxxxxxx> Date: Sat Sep 14 20:43:44 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:22 2013 UTC Ticket: https://dev.haiku-os.org/ticket/7162 Localize bitsinfo Closes ticket #7162. Signed-off-by: Niels Sascha Reedijk <niels.reedijk@xxxxxxxxx> ---------------------------------------------------------------------------- diff --git a/src/tools/translation/bitsinfo/Jamfile b/src/tools/translation/bitsinfo/Jamfile index 50b011f..f021561 100644 --- a/src/tools/translation/bitsinfo/Jamfile +++ b/src/tools/translation/bitsinfo/Jamfile @@ -1,4 +1,15 @@ SubDir HAIKU_TOP src tools translation bitsinfo ; -BinCommand bitsinfo : bitsinfo.cpp : be $(TARGET_LIBSUPC++) ; +SetSubDirSupportedPlatformsBeOSCompatible ; +BinCommand bitsinfo : + bitsinfo.cpp + : be libbe.so $(HAIKU_LOCALE_LIBS) translation $(TARGET_LIBSTDC++) $(TARGET_LIBSUPC++) ; + +AddResources bitsinfo : bitsinfo.rdef ; + +DoCatalogs bitsinfo : + x-vnd.Haiku-bitsinfo + : + bitsinfo.cpp +; diff --git a/src/tools/translation/bitsinfo/bitsinfo.cpp b/src/tools/translation/bitsinfo/bitsinfo.cpp index 7446228..81a1328 100644 --- a/src/tools/translation/bitsinfo/bitsinfo.cpp +++ b/src/tools/translation/bitsinfo/bitsinfo.cpp @@ -38,10 +38,14 @@ #include <stdlib.h> #include <string.h> #include <ByteOrder.h> +#include <Catalog.h> #include <File.h> #include <TranslatorFormats.h> #include <StorageDefs.h> +#undef B_TRANSLATE_CONTEXT +#define B_TRANSLATE_CONTEXT "bitsinfo" + struct ColorSpaceName { color_space id; const char *name; @@ -62,7 +66,8 @@ PrintBitsInfo(const char *filepath, bool bdumppixels) // read in the rest of the header ssize_t size = sizeof(TranslatorBitmap); if (file.Read(reinterpret_cast<uint8 *> (&header), size) != size) { - printf("\nError: Unable to read the Be bitmap header.\n"); + printf(B_TRANSLATE("\nError: Unable to read the Be bitmap " + "header.\n")); return; } if (!bdumppixels) @@ -72,28 +77,29 @@ PrintBitsInfo(const char *filepath, bool bdumppixels) // convert to host byte order if (swap_data(B_UINT32_TYPE, &header, sizeof(TranslatorBitmap), B_SWAP_BENDIAN_TO_HOST) != B_OK) { - printf("\nError: Unable to swap byte order\n"); + printf(B_TRANSLATE("\nError: Unable to swap byte order\n")); return; } - printf("\nBe bitmap (\"bits\") header for: %s\n\n", filepath); + printf(B_TRANSLATE("\nBe bitmap (\"bits\") header for: %s\n\n"), + filepath); const uint32 kbitsmagic = 0x62697473UL; // in ASCII, this number looks like "bits" - printf("magic number: 0x%.8lx ", header.magic); if (header.magic == kbitsmagic) - printf("(valid)\n"); + printf(B_TRANSLATE("magic number: 0x%.8lx (valid)\n"), + header.magic); else - printf("(INVALID, should be: 0x%.8lx)\n", - kbitsmagic); - printf("bounds: (%f, %f, %f, %f)\n", + printf(B_TRANSLATE("magic number: 0x%.8lx (INVALID, should be: " + "0x%.8lx)\n"), header.magic, kbitsmagic); + printf(B_TRANSLATE("bounds: (%f, %f, %f, %f)\n"), header.bounds.left, header.bounds.top, header.bounds.right, header.bounds.bottom); - printf("dimensions: %d x %d\n", + printf(B_TRANSLATE("dimensions: %d x %d\n"), static_cast<int>(header.bounds.Width() + 1), static_cast<int>(header.bounds.Height() + 1)); - printf("bytes per row: %u\n", + printf(B_TRANSLATE("bytes per row: %u\n"), static_cast<unsigned int>(header.rowBytes)); // print out colorspace if it matches an item in the list @@ -149,15 +155,15 @@ PrintBitsInfo(const char *filepath, bool bdumppixels) int32 i; for (i = 0; i < kncolorspaces; i++) { if (header.colors == colorspaces[i].id) { - printf("color space: %s\n", colorspaces[i].name); + printf(B_TRANSLATE("color space: %s\n"), colorspaces[i].name); break; } } if (i == kncolorspaces) - printf("color space: Unknown (0x%.8lx)\n", + printf(B_TRANSLATE("color space: Unknown (0x%.8lx)\n"), static_cast<unsigned long>(header.colors)); - printf("data size: %u\n", + printf(B_TRANSLATE("data size: %u\n"), static_cast<unsigned int>(header.dataSize)); if (bdumppixels) { @@ -178,18 +184,19 @@ PrintBitsInfo(const char *filepath, bool bdumppixels) break; default: - printf("Sorry, %s isn't supported yet" - " for this color space\n", kpixels); + printf(B_TRANSLATE("Sorry, %s isn't supported yet" + " for this color space\n"), kpixels); return; } uint8 *prow = new uint8[header.rowBytes]; if (!prow) { - printf("Error: Not enough memory for row buffer\n"); + printf(B_TRANSLATE("Error: Not enough memory for row " + "buffer\n")); return; } ssize_t ret, n; uint32 totalbytes = 0; - printf("pixel data (%s):\n", components); + printf(B_TRANSLATE("pixel data (%s):\n"), components); while ((ret = file.Read(prow, header.rowBytes)) > 0) { n = 0; while (n < ret) { @@ -205,18 +212,21 @@ PrintBitsInfo(const char *filepath, bool bdumppixels) } } else - printf("Error opening %s\n", filepath); + printf(B_TRANSLATE_COMMENT("Error opening %s\n", + "file path is opening"), filepath); } int main(int argc, char **argv) { if (argc == 1) { - printf("\nbitsinfo - reports information about a Be bitmap (\"bits\") image\n"); - printf("\nUsage:\n"); - printf("bitsinfo [options] filename.bits\n\n"); - printf("Options:\n\n"); - printf("\t%s \t print RGB color for each pixel\n", kpixels); + printf(B_TRANSLATE("\nbitsinfo - reports information about a Be " + "bitmap (\"bits\") image\n")); + printf(B_TRANSLATE("\nUsage:\n")); + printf(B_TRANSLATE("bitsinfo [options] filename.bits\n\n")); + printf(B_TRANSLATE("Options:\n\n")); + printf(B_TRANSLATE("\t%s \t print RGB color for each pixel\n"), + kpixels); } else { int32 first = 1; diff --git a/src/tools/translation/bitsinfo/bitsinfo.rdef b/src/tools/translation/bitsinfo/bitsinfo.rdef new file mode 100644 index 0000000..935e1e0 --- /dev/null +++ b/src/tools/translation/bitsinfo/bitsinfo.rdef @@ -0,0 +1,17 @@ +/* + * bitsinfo.rdef + */ + +resource app_signature "application/x-vnd.Haiku-bitsinfo"; + +resource app_version { + major = 1, + middle = 0, + minor = 0, + variety = 0, + internal = 0, + short_info = "bitsinfo displays text information about Be bitmap format ("bits") images.", + long_info = "Haiku bitsinfo is a command line tool for displaying text information about Be bitmap format ("bits") images. Written by Michael Wilber, OBOS Translation Kit Team, Copyright © 2003 OpenBeOS Project." +}; + +resource app_flags B_SINGLE_LAUNCH; ############################################################################ Commit: cae234acf0b0ba5609033d7ec0d91d3aac6ae07c Author: Jorma Karvonen <karvonen.jorma@xxxxxxxxx> Date: Sat Sep 14 20:47:58 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:23 2013 UTC Ticket: https://dev.haiku-os.org/ticket/7164 Localize bmpinfo Closes ticket #7164 Signed-off-by: Niels Sascha Reedijk <niels.reedijk@xxxxxxxxx> ---------------------------------------------------------------------------- diff --git a/src/tools/translation/bmpinfo/Jamfile b/src/tools/translation/bmpinfo/Jamfile index 584b9a1..fae0e01 100644 --- a/src/tools/translation/bmpinfo/Jamfile +++ b/src/tools/translation/bmpinfo/Jamfile @@ -1,4 +1,11 @@ SubDir HAIKU_TOP src tools translation bmpinfo ; -BinCommand bmpinfo : bmpinfo.cpp : be ; +BinCommand bmpinfo : bmpinfo.cpp : be libbe.so $(HAIKU_LOCALE_LIBS) translation $(TARGET_LIBSTDC++) $(TARGET_LIBSUPC++) ; +AddResources bmpinfo : bmpinfo.rdef ; + +DoCatalogs bmpinfo : + x-vnd.Haiku-bmpsinfo + : + bmpinfo.cpp +; diff --git a/src/tools/translation/bmpinfo/bmpinfo.cpp b/src/tools/translation/bmpinfo/bmpinfo.cpp index b5eb0d7..c5e7a51 100644 --- a/src/tools/translation/bmpinfo/bmpinfo.cpp +++ b/src/tools/translation/bmpinfo/bmpinfo.cpp @@ -36,10 +36,14 @@ #include <stdlib.h> #include <string.h> #include <ByteOrder.h> +#include <Catalog.h> #include <File.h> #include <TranslatorFormats.h> #include <StorageDefs.h> +#undef B_TRANSLATE_CONTEXT +#define B_TRANSLATE_CONTEXT "bmpinfo" + #define BMP_NO_COMPRESS 0 #define BMP_RLE8_COMPRESS 1 #define BMP_RLE4_COMPRESS 2 @@ -82,7 +86,7 @@ print_bmp_info(BFile &file) ssize_t size = 14; if (file.Read(buf, size) != size) { - printf("Error: unable to read BMP file header\n"); + printf(B_TRANSLATE("Error: unable to read BMP file header\n")); return; } @@ -96,16 +100,18 @@ print_bmp_info(BFile &file) swap_data(B_UINT32_TYPE, (reinterpret_cast<uint8 *> (&fh)) + 2, 12, B_SWAP_LENDIAN_TO_HOST); - printf("\nFile Header:\n"); - printf(" magic: 0x%.4x (should be: 0x424d)\n", fh.magic); - printf(" file size: 0x%.8lx (%lu)\n", fh.fileSize, fh.fileSize); - printf(" reserved: 0x%.8lx (should be: 0x%.8x)\n", fh.reserved, 0); - printf("data offset: 0x%.8lx (%lu) (should be: >= 54 for MS format " - "and >= 26 for OS/2 format)\n", fh.dataOffset, fh.dataOffset); + printf(B_TRANSLATE("\nFile Header:\n")); + printf(B_TRANSLATE(" magic: 0x%.4x (should be: 0x424d)\n"), fh.magic); + printf(B_TRANSLATE(" file size: 0x%.8lx (%lu)\n"), fh.fileSize, + fh.fileSize); + printf(B_TRANSLATE(" reserved: 0x%.8lx (should be: 0x%.8x)\n"), + fh.reserved, 0); + printf(B_TRANSLATE("data offset: 0x%.8lx (%lu) (should be: >= 54 for MS " + "format and >= 26 for OS/2 format)\n"), fh.dataOffset, fh.dataOffset); uint32 headersize = 0; if (file.Read(&headersize, 4) != 4) { - printf("Error: unable to read info header size\n"); + printf(B_TRANSLATE("Error: unable to read info header size\n")); return; } swap_data(B_UINT32_TYPE, &headersize, 4, B_SWAP_LENDIAN_TO_HOST); @@ -115,7 +121,7 @@ print_bmp_info(BFile &file) MSInfoHeader msh; msh.size = headersize; if (file.Read(reinterpret_cast<uint8 *> (&msh) + 4, 36) != 36) { - printf("Error: unable to read entire MS info header\n"); + printf(B_TRANSLATE("Error: unable to read entire MS info header\n")); return; } @@ -123,22 +129,33 @@ print_bmp_info(BFile &file) swap_data(B_UINT32_TYPE, reinterpret_cast<uint8 *> (&msh) + 4, 36, B_SWAP_LENDIAN_TO_HOST); - printf("\nMS Info Header:\n"); - printf(" header size: 0x%.8lx (%lu) (should be: 40)\n", msh.size, msh.size); - printf(" width: %lu\n", msh.width); - printf(" height: %lu\n", msh.height); - printf(" planes: %u (should be: 1)\n", msh.planes); - printf(" bits per pixel: %u (should be: 1,4,8,16,24 or 32)\n", msh.bitsperpixel); - printf(" compression: %s (%lu)\n", - ((msh.compression == BMP_NO_COMPRESS) ? ("none") : - ((msh.compression == BMP_RLE8_COMPRESS) ? ("RLE 8") : - ((msh.compression == BMP_RLE4_COMPRESS) ? ("RLE 4") : - ("unknown")))), msh.compression); - printf(" image size: 0x%.8lx (%lu)\n", msh.imagesize, msh.imagesize); - printf(" x pixels/meter: %lu\n", msh.xpixperm); - printf(" y pixels/meter: %lu\n", msh.ypixperm); - printf(" colors used: %lu\n", msh.colorsused); - printf("colors important: %lu\n", msh.colorsimportant); + printf(B_TRANSLATE("\nMS Info Header:\n")); + printf(B_TRANSLATE(" header size: 0x%.8lx (%lu) (should be: " + "40)\n"), msh.size, msh.size); + printf(B_TRANSLATE(" width: %lu\n"), msh.width); + printf(B_TRANSLATE(" height: %lu\n"), msh.height); + printf(B_TRANSLATE(" planes: %u (should be: 1)\n"), + msh.planes); + printf(B_TRANSLATE(" bits per pixel: %u (should be: 1,4,8,16,24 or " + "32)\n"), msh.bitsperpixel); + if (msh.compression == BMP_NO_COMPRESS) + printf(B_TRANSLATE(" compression: none (%lu)\n"), + msh.compression); + else if (msh.compression == BMP_RLE8_COMPRESS) + printf(B_TRANSLATE(" compression: RLE8 (%lu)\n"), + msh.compression); + else if (msh.compression == BMP_RLE4_COMPRESS) + printf(B_TRANSLATE(" compression: RLE4 (%lu)\n"), + msh.compression); + else + printf(B_TRANSLATE(" compression: unknown (%lu)\n"), + msh.compression); + printf(B_TRANSLATE(" image size: 0x%.8lx (%lu)\n"), msh.imagesize, + msh.imagesize); + printf(B_TRANSLATE(" x pixels/meter: %lu\n"), msh.xpixperm); + printf(B_TRANSLATE(" y pixels/meter: %lu\n"), msh.ypixperm); + printf(B_TRANSLATE(" colors used: %lu\n"), msh.colorsused); + printf(B_TRANSLATE("colors important: %lu\n"), msh.colorsimportant); } else if (headersize == sizeof(OS2InfoHeader)) { // OS/2 format @@ -146,7 +163,8 @@ print_bmp_info(BFile &file) OS2InfoHeader os2; os2.size = headersize; if (file.Read(reinterpret_cast<uint8 *> (&os2) + 4, 8) != 8) { - printf("Error: unable to read entire OS/2 info header\n"); + printf(B_TRANSLATE("Error: unable to read entire OS/2 info " + "header\n")); return; } @@ -154,17 +172,18 @@ print_bmp_info(BFile &file) swap_data(B_UINT32_TYPE, reinterpret_cast<uint8 *> (&os2) + 4, 8, B_SWAP_LENDIAN_TO_HOST); - printf("\nOS/2 Info Header:\n"); - printf(" header size: 0x%.8lx (%lu) (should be: 12)\n", os2.size, os2.size); - printf(" width: %u\n", os2.width); - printf(" height: %u\n", os2.height); - printf(" planes: %u (should be: 1)\n", os2.planes); - printf("bits per pixel: %u (should be: 1,4,8 or 24)\n", + printf(B_TRANSLATE("\nOS/2 Info Header:\n")); + printf(B_TRANSLATE(" header size: 0x%.8lx (%lu) (should be: 12)\n"), + os2.size, os2.size); + printf(B_TRANSLATE(" width: %u\n"), os2.width); + printf(B_TRANSLATE(" height: %u\n"), os2.height); + printf(B_TRANSLATE(" planes: %u (should be: 1)\n"), os2.planes); + printf(B_TRANSLATE("bits per pixel: %u (should be: 1,4,8 or 24)\n"), os2.bitsperpixel); } else - printf("Error: info header size (%lu) does not match MS or OS/2 " - "info header size\n", headersize); + printf(B_TRANSLATE("Error: info header size (%lu) does not match MS " + "or OS/2 info header size\n"), headersize); } int @@ -173,18 +192,20 @@ main(int argc, char **argv) printf("\n"); if (argc == 1) { - printf("bmpinfo - reports information about a BMP image file\n"); - printf("\nUsage:\n"); - printf("bmpinfo filename.bmp\n"); + printf(B_TRANSLATE("bmpinfo - reports information about a BMP image " + "file\n")); + printf(B_TRANSLATE("\nUsage:\n")); + printf(B_TRANSLATE("bmpinfo filename.bmp\n")); } else { BFile file; for (int32 i = 1; i < argc; i++) { if (file.SetTo(argv[i], B_READ_ONLY) != B_OK) - printf("\nError opening %s\n", argv[i]); + printf(B_TRANSLATE("\nError opening %s\n"), argv[i]); else { - printf("\nBMP image information for: %s\n", argv[i]); + printf(B_TRANSLATE("\nBMP image information for: %s\n"), + argv[i]); print_bmp_info(file); } } diff --git a/src/tools/translation/bmpinfo/bmpinfo.rdef b/src/tools/translation/bmpinfo/bmpinfo.rdef new file mode 100644 index 0000000..90e6148 --- /dev/null +++ b/src/tools/translation/bmpinfo/bmpinfo.rdef @@ -0,0 +1,17 @@ +/* + * bmpinfo.rdef + */ + +resource app_signature "application/x-vnd.Haiku-bmpinfo"; + +resource app_version { + major = 1, + middle = 0, + minor = 0, + variety = 0, + internal = 0, + short_info = "bmpinfo displays text information about BMP images.", + long_info = "Haiku bmpinfo is a command line tool for displaying text information about BMP images. Written by Michael Wilber, OBOS Translation Kit Team, Copyright © 2003 OpenBeOS Project." +}; + +resource app_flags B_SINGLE_LAUNCH; ############################################################################ Commit: 6a66acded810ada5d2a897e1256f2a117e0f8407 Author: Jorma Karvonen <karvonen.jorma@xxxxxxxxx> Date: Sat Sep 14 20:52:43 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:23 2013 UTC Ticket: https://dev.haiku-os.org/ticket/7168 Localize tgainfo Closes ticket #7168 Signed-off-by: Niels Sascha Reedijk <niels.reedijk@xxxxxxxxx> ---------------------------------------------------------------------------- diff --git a/src/tools/translation/bitsinfo/Jamfile b/src/tools/translation/bitsinfo/Jamfile index f021561..eca781e 100644 --- a/src/tools/translation/bitsinfo/Jamfile +++ b/src/tools/translation/bitsinfo/Jamfile @@ -1,7 +1,5 @@ SubDir HAIKU_TOP src tools translation bitsinfo ; -SetSubDirSupportedPlatformsBeOSCompatible ; - BinCommand bitsinfo : bitsinfo.cpp : be libbe.so $(HAIKU_LOCALE_LIBS) translation $(TARGET_LIBSTDC++) $(TARGET_LIBSUPC++) ; diff --git a/src/tools/translation/tgainfo/Jamfile b/src/tools/translation/tgainfo/Jamfile index 39e8a88..b4b5eb4 100644 --- a/src/tools/translation/tgainfo/Jamfile +++ b/src/tools/translation/tgainfo/Jamfile @@ -1,4 +1,13 @@ SubDir HAIKU_TOP src tools translation tgainfo ; -BinCommand tgainfo : tgainfo.cpp : be ; +BinCommand tgainfo : + tgainfo.cpp + : be libbe.so $(HAIKU_LOCALE_LIBS) translation $(TARGET_LIBSTDC++) $(TARGET_LIBSUPC++) ; +AddResources tgainfo : tgainfo.rdef ; + +DoCatalogs tgainfo : + x-vnd.Haiku-tgainfo + : + tgainfo.cpp +; diff --git a/src/tools/translation/tgainfo/tgainfo.cpp b/src/tools/translation/tgainfo/tgainfo.cpp index e3036f5..925c35e 100644 --- a/src/tools/translation/tgainfo/tgainfo.cpp +++ b/src/tools/translation/tgainfo/tgainfo.cpp @@ -36,10 +36,14 @@ #include <stdlib.h> #include <string.h> #include <ByteOrder.h> +#include <Catalog.h> #include <File.h> #include <TranslatorFormats.h> #include <StorageDefs.h> +#undef B_TRANSLATE_CONTEXT +#define B_TRANSLATE_CONTEXT "tgainfo" + #define max(x,y) ((x > y) ? x : y) #define DATA_BUFFER_SIZE 64 @@ -99,8 +103,8 @@ const char * colormaptype(uint8 n) { switch (n) { - case 0: return "No colormap"; - case 1: return "colormap"; + case 0: return B_TRANSLATE("No colormap"); + case 1: return B_TRANSLATE("colormap"); } return "unknown"; } @@ -109,15 +113,16 @@ const char * imagetype(uint8 n) { switch (n) { - case 0: return "No Image Data"; - case 1: return "colormap"; - case 2: return "true color"; - case 3: return "grayscale"; - case 9: return "RLE colormap"; - case 10: return "RLE true color"; - case 11: return "RLE grayscale"; + case 0: return B_TRANSLATE("No Image Data"); + case 1: return B_TRANSLATE("colormap"); + case 2: return B_TRANSLATE("true color"); + case 3: return B_TRANSLATE("grayscale"); + case 9: return B_TRANSLATE("RLE colormap"); + case 10: return B_TRANSLATE("RLE true color"); + case 11: return B_TRANSLATE("RLE grayscale"); + default: break; } - return "unknown"; + return B_TRANSLATE("unknown"); } uint16 @@ -140,7 +145,7 @@ print_tga_info(BFile &file) // read in TGA headers ssize_t size = TGA_HEADERS_SIZE; if (size > 0 && file.Read(buf, size) != size) { - printf("Error: unable to read all TGA headers\n"); + printf(B_TRANSLATE("Error: unable to read all TGA headers\n")); return; } @@ -150,12 +155,15 @@ print_tga_info(BFile &file) fh.colormaptype = buf[1]; fh.imagetype = buf[2]; - printf("\nFile Header:\n"); - printf(" id length: %d\n", fh.idlength); + printf(B_TRANSLATE("\nFile Header:\n")); + printf(B_TRANSLATE(" id length: %d\n"), static_cast<int>(fh.idlength)); - printf("colormap type: %d (%s)\n", fh.colormaptype, - colormaptype(fh.colormaptype)); - printf(" image type: %d (%s)\n", fh.imagetype, imagetype(fh.imagetype)); + printf(B_TRANSLATE("colormap type: %d (%s)\n"), + static_cast<int>(fh.colormaptype), + static_cast<const char *>(colormaptype(fh.colormaptype))); + printf(B_TRANSLATE(" image type: %d (%s)\n"), + static_cast<int>(fh.imagetype), + static_cast<const char *>(imagetype(fh.imagetype))); // TGA color map spec @@ -164,10 +172,13 @@ print_tga_info(BFile &file) mapspec.length = tga_uint16(reinterpret_cast<char *>(buf), 5); mapspec.entrysize = buf[7]; - printf("\nColormap Spec:\n"); - printf("first entry: %d\n", mapspec.firstentry); - printf(" length: %d\n", mapspec.length); - printf(" entry size: %d\n", mapspec.entrysize); + printf(B_TRANSLATE("\nColormap Spec:\n")); + printf(B_TRANSLATE("first entry: %d\n"), + static_cast<int>(mapspec.firstentry)); + printf(B_TRANSLATE(" length: %d\n"), + static_cast<int>(mapspec.length)); + printf(B_TRANSLATE(" entry size: %d\n"), + static_cast<int>(mapspec.entrysize)); // TGA image spec @@ -179,20 +190,47 @@ print_tga_info(BFile &file) imagespec.depth = buf[16]; imagespec.descriptor = buf[17]; - printf("\nImage Spec:\n"); - printf(" x origin: %d\n", imagespec.xorigin); - printf(" y origin: %d\n", imagespec.yorigin); - printf(" width: %d\n", imagespec.width); - printf(" height: %d\n", imagespec.height); - printf(" depth: %d\n", imagespec.depth); - printf("descriptor: 0x%.2x\n", imagespec.descriptor); - printf("\talpha (attr): %d\n", - imagespec.descriptor & TGA_DESC_ALPHABITS); - printf("\t origin: %d (%s %s)\n", - imagespec.descriptor & (TGA_ORIGIN_VERT_BIT | TGA_ORIGIN_HORZ_BIT), - ((imagespec.descriptor & TGA_ORIGIN_VERT_BIT) ? "top" : "bottom"), - ((imagespec.descriptor & TGA_ORIGIN_HORZ_BIT) ? "right" : "left")); - printf("\t bits 7 & 6: %d\n", imagespec.descriptor & TGA_DESC_BITS76); + printf(B_TRANSLATE("\nImage Spec:\n")); + printf(B_TRANSLATE(" x origin: %d\n"), + static_cast<int>(imagespec.xorigin)); + printf(B_TRANSLATE(" y origin: %d\n"), + static_cast<int>(imagespec.yorigin)); + printf(B_TRANSLATE(" width: %d\n"), + static_cast<int>(imagespec.width)); + printf(B_TRANSLATE(" height: %d\n"), + static_cast<int>(imagespec.height)); + printf(B_TRANSLATE(" depth: %d\n"), + static_cast<int>(imagespec.depth)); + printf(B_TRANSLATE("descriptor: 0x%.2x\n"), + static_cast<int>(imagespec.descriptor)); + printf(B_TRANSLATE("\talpha (attr): %d\n"), + static_cast<int>(imagespec.descriptor & TGA_DESC_ALPHABITS)); + if (imagespec.descriptor & TGA_ORIGIN_VERT_BIT) + if (imagespec.descriptor & TGA_ORIGIN_HORZ_BIT) + printf(B_TRANSLATE("\t origin: %d (%s %s)\n"), + static_cast<int>(imagespec.descriptor & (TGA_ORIGIN_VERT_BIT + | TGA_ORIGIN_HORZ_BIT)), static_cast<const char *>("top"), + static_cast<const char *>("right")); + else + printf(B_TRANSLATE("\t origin: %d (%s %s)\n"), + static_cast<int>(imagespec.descriptor & (TGA_ORIGIN_VERT_BIT + | TGA_ORIGIN_HORZ_BIT)), static_cast<const char *>("top"), + static_cast<const char *>("left")); + else + if (imagespec.descriptor & TGA_ORIGIN_HORZ_BIT) + printf(B_TRANSLATE("\t origin: %d (%s %s)\n"), + static_cast<int>(imagespec.descriptor & (TGA_ORIGIN_VERT_BIT + | TGA_ORIGIN_HORZ_BIT)), static_cast<const char *>("bottom"), + static_cast<const char *>("right")); + else + printf(B_TRANSLATE("\t origin: %d (%s %s)\n"), + static_cast<int>(imagespec.descriptor & (TGA_ORIGIN_VERT_BIT + | TGA_ORIGIN_HORZ_BIT)), static_cast<const char *>("bottom"), + static_cast<const char *>("left")); + + + printf(B_TRANSLATE("\t bits 7 & 6: %d\n"), + static_cast<int>(imagespec.descriptor & TGA_DESC_BITS76)); // Optional TGA Footer @@ -208,107 +246,128 @@ print_tga_info(BFile &file) extoffset = tga_uint32(tgafooter, 0); devoffset = tga_uint32(tgafooter, 4); - printf("\nTGA Footer:\n"); - printf("extension offset: 0x%.8lx (%ld)\n", extoffset, extoffset); - printf("developer offset: 0x%.8lx (%ld)\n", devoffset, devoffset); - printf("signature: %s\n", tgafooter + 8); + printf(B_TRANSLATE("\nTGA Footer:\n")); + printf(B_TRANSLATE("extension offset: 0x%.8lx (%ld)\n"), + static_cast<long int>(extoffset), + static_cast<long int>(extoffset)); + printf(B_TRANSLATE("developer offset: 0x%.8lx (%ld)\n"), + static_cast<long int>(devoffset), + static_cast<long int>(devoffset)); + printf(B_TRANSLATE("signature: %s\n"), tgafooter + 8); if (extoffset) { char extbuf[TGA_EXT_LEN]; if (file.ReadAt(extoffset, extbuf, TGA_EXT_LEN) == TGA_EXT_LEN) { - printf("\nExtension Area:\n"); + printf(B_TRANSLATE("\nExtension Area:\n")); char strbuffer[LINE_LEN]; uint16 extsize = tga_uint16(extbuf, 0); if (extsize < TGA_EXT_LEN) { - printf("\nError: extension area is too small (%d)\n", extsize); + printf(B_TRANSLATE("\nError: extension " + "area is too small (%d)\n"), extsize); return; } - printf("size: %d\n", extsize); + printf(B_TRANSLATE("size: %d\n"), extsize); memset(strbuffer, 0, LINE_LEN); strncpy(strbuffer, extbuf + 2, 41); printf("author: \"%s\"\n", strbuffer); - printf("comments:\n"); + printf(B_TRANSLATE("comments:\n")); for (int32 i = 0; i < 4; i++) { memset(strbuffer, 0, LINE_LEN); strcpy(strbuffer, extbuf + 43 + (i * 81)); - printf("\tline %ld: \"%s\"\n", i + 1, strbuffer); + printf(B_TRANSLATE("\tline %ld: \"%s\"\n"), + static_cast<long int>(i + 1), + static_cast<const char *>(strbuffer)); } - printf("date/time (yyyy-mm-dd hh:mm:ss): %.4d-%.2d-%.2d %.2d:%.2d:%.2d\n", + printf(B_TRANSLATE("date/time (yyyy-mm-dd hh:mm:ss): " + "%.4d-%.2d-%.2d %.2d:%.2d:%.2d\n"), tga_uint16(extbuf, 367), tga_uint16(extbuf, 369), tga_uint16(extbuf, 371), tga_uint16(extbuf, 373), tga_uint16(extbuf, 375), tga_uint16(extbuf, 377)); memset(strbuffer, 0, LINE_LEN); strncpy(strbuffer, extbuf + 379, 41); - printf("job name: \"%s\"\n", strbuffer); + printf(B_TRANSLATE("job name: \"%s\"\n"), strbuffer); - printf("job time (hh:mm:ss): %.2d:%.2d:%.2d\n", - tga_uint16(extbuf, 420), tga_uint16(extbuf, 422), - tga_uint16(extbuf, 424)); + printf(B_TRANSLATE("job time (hh:mm:ss): " + "%.2d:%.2d:%.2d\n"), tga_uint16(extbuf, 420), + tga_uint16(extbuf, 422), tga_uint16(extbuf, 424)); memset(strbuffer, 0, LINE_LEN); strncpy(strbuffer, extbuf + 426, 41); - printf("software id: \"%s\"\n", strbuffer); + printf(B_TRANSLATE("software id: \"%s\"\n"), + strbuffer); char strver[] = "[null]"; if (extbuf[469] != '\0') { strver[0] = extbuf[469]; strver[1] = '\0'; } - printf("software version, letter: %d, %s\n", - tga_uint16(extbuf, 467), strver); + printf(B_TRANSLATE("software version, letter: %d, " + "%s\n"), tga_uint16(extbuf, 467), strver); - printf("key color (A,R,G,B): %d, %d, %d, %d\n", - extbuf[470], extbuf[471], extbuf[472], extbuf[473]); + printf(B_TRANSLATE("key color (A,R,G,B): %d, %d, %d, " + "%d\n"), extbuf[470], extbuf[471], extbuf[472], + extbuf[473]); - printf("pixel aspect ratio: %d / %d\n", + printf(B_TRANSLATE("pixel aspect ratio: %d / %d\n"), tga_uint16(extbuf, 474), tga_uint16(extbuf, 476)); - printf("gamma value: %d / %d\n", + printf(B_TRANSLATE("gamma value: %d / %d\n"), tga_uint16(extbuf, 478), tga_uint16(extbuf, 480)); - printf("color correction offset: 0x%.8lx (%ld)\n", - tga_uint32(extbuf, 482), tga_uint32(extbuf, 482)); - printf("postage stamp offset: 0x%.8lx (%ld)\n", - tga_uint32(extbuf, 486), tga_uint32(extbuf, 486)); - printf("scan line offset: 0x%.8lx (%ld)\n", - tga_uint32(extbuf, 490), tga_uint32(extbuf, 490)); + printf(B_TRANSLATE("color correction offset: 0x%.8lx " + "(%ld)\n"), tga_uint32(extbuf, 482), + tga_uint32(extbuf, 482)); + printf(B_TRANSLATE("postage stamp offset: 0x%.8lx " + "(%ld)\n"), tga_uint32(extbuf, 486), + tga_uint32(extbuf, 486)); + printf(B_TRANSLATE("scan line offset: 0x%.8lx " + "(%ld)\n"), tga_uint32(extbuf, 490), + tga_uint32(extbuf, 490)); const char *strattrtype = NULL; uint8 attrtype = extbuf[494]; switch (attrtype) { - case 0: strattrtype = "no alpha"; break; - case 1: strattrtype = "undefined, ignore"; break; - case 2: strattrtype = "undefined, retain"; break; - case 3: strattrtype = "alpha"; break; - case 4: strattrtype = "pre-multiplied alpha"; break; + case 0: strattrtype + = B_TRANSLATE("no alpha"); break; + case 1: strattrtype + = B_TRANSLATE("undefined, ignore"); break; + case 2: strattrtype + = B_TRANSLATE("undefined, retain"); break; + case 3: strattrtype + = B_TRANSLATE("alpha"); break; + case 4: strattrtype + = B_TRANSLATE("pre-multiplied alpha"); break; default: if (attrtype > 4 && attrtype < 128) - strattrtype = "reserved"; + strattrtype = B_TRANSLATE("reserved"); else - strattrtype = "unassigned"; + strattrtype = B_TRANSLATE("unassigned"); break; } - printf("attributes type: %d (%s)\n", attrtype, strattrtype); + printf(B_TRANSLATE("attributes type: %d (%s)\n"), + attrtype, strattrtype); } else - printf("\nError: Unable to read entire extension area\n"); + printf(B_TRANSLATE("\nError: Unable to read entire " + "extension area\n")); } } else - printf("\nTGA footer not found\n"); + printf(B_TRANSLATE("\nTGA footer not found\n")); } else - printf("\nError: Unable to read TGA footer section\n"); + printf(B_TRANSLATE("\nError: Unable to read TGA footer " + "section\n")); } else - printf("\nError: Unable to get file size\n"); + printf(B_TRANSLATE("\nError: Unable to get file size\n")); } int @@ -317,18 +376,18 @@ main(int argc, char **argv) printf("\n"); if (argc == 1) { - printf("tgainfo - reports information about a TGA image file\n"); - printf("\nUsage:\n"); - printf("tgainfo filename.tga\n"); + printf(B_TRANSLATE("tgainfo - reports information about a TGA image file\n")); + printf(B_TRANSLATE("\nUsage:\n")); + printf(B_TRANSLATE("tgainfo filename.tga\n")); } else { BFile file; for (int32 i = 1; i < argc; i++) { if (file.SetTo(argv[i], B_READ_ONLY) != B_OK) - printf("\nError opening %s\n", argv[i]); + printf(B_TRANSLATE("\nError opening %s\n"), argv[i]); else { - printf("\nTGA image information for: %s\n", argv[i]); + printf(B_TRANSLATE("\nTGA image information for: %s\n"), argv[i]); print_tga_info(file); } } diff --git a/src/tools/translation/tgainfo/tgainfo.rdef b/src/tools/translation/tgainfo/tgainfo.rdef new file mode 100644 index 0000000..3e0810f --- /dev/null +++ b/src/tools/translation/tgainfo/tgainfo.rdef @@ -0,0 +1,17 @@ +/* + * tgainfo.rdef + */ + +resource app_signature "application/x-vnd.Haiku-tgainfo"; + +resource app_version { + major = 1, + middle = 0, + minor = 0, + variety = 0, + internal = 0, + short_info = "tgainfo displays text information about TGA images.", + long_info = "Haiku tgainfo is a command line tool for displaying text information about TGA images. Written by Michael Wilber, OBOS Translation Kit Team, Copyright © 2003 OpenBeOS Project." +}; + +resource app_flags B_SINGLE_LAUNCH; ############################################################################ Commit: 89f89a07e173d8789fb916e88b00a6ec9f6f77d5 Author: Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> Date: Sat Sep 14 18:28:54 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:24 2013 UTC ARM: boot: pass boot disk identifier This to stop the vfs_boot.cpp code from complaining. ---------------------------------------------------------------------------- diff --git a/src/system/boot/platform/u-boot/devices.cpp b/src/system/boot/platform/u-boot/devices.cpp index 650211b..ac380a7 100644 --- a/src/system/boot/platform/u-boot/devices.cpp +++ b/src/system/boot/platform/u-boot/devices.cpp @@ -5,10 +5,12 @@ #include <KernelExport.h> -#include <boot/platform.h> + +#include <boot/disk_identifier.h> #include <boot/vfs.h> -#include <boot/stdio.h> +#include <boot/platform.h> #include <boot/stage2.h> +#include <boot/stdio.h> #define TRACE_DEVICES #ifdef TRACE_DEVICES @@ -73,6 +75,18 @@ platform_add_block_devices(stage2_args *args, NodeList *devicesList) status_t platform_register_boot_device(Node *device) { - TRACE("platform_register_boot_device\n"); + disk_identifier disk_ident; + disk_ident.bus_type = UNKNOWN_BUS; + disk_ident.device_type = UNKNOWN_DEVICE; + disk_ident.device.unknown.size = device->Size(); + + for (int32 i = 0; i < NUM_DISK_CHECK_SUMS; i++) { + disk_ident.device.unknown.check_sums[i].offset = -1; + disk_ident.device.unknown.check_sums[i].sum = 0; + } + + gBootVolume.SetData(BOOT_VOLUME_DISK_IDENTIFIER, B_RAW_TYPE, + &disk_ident, sizeof(disk_ident)); + return B_OK; } ############################################################################ Commit: b9e8ec7bc02de57d5031196fc88cf44a94a6621d Author: Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> Date: Sun Sep 15 01:47:40 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:24 2013 UTC debugger/debuganalyzer: Remove the explicit -Werror from Jamfile Specifying -Werror in the Jamfiles directly prevents the build system from disabling error-on-warning for some arch specific warnings (or even globally), breaking the ARM build. The "src/apps" directory is already setup to compile with -Werror by the build system anyway, so remove the explicit setting here. ---------------------------------------------------------------------------- diff --git a/src/apps/debuganalyzer/gui/Jamfile b/src/apps/debuganalyzer/gui/Jamfile index a3b7e5b..fafe255 100644 --- a/src/apps/debuganalyzer/gui/Jamfile +++ b/src/apps/debuganalyzer/gui/Jamfile @@ -5,9 +5,6 @@ UsePrivateSystemHeaders ; UseHeaders $(HAIKU_DEBUG_ANALYZER_HEADERS) ; -CCFLAGS += -Werror ; -C++FLAGS += -Werror ; - MergeObject DebugAnalyzer_gui.o : AbstractGeneralPage.cpp diff --git a/src/apps/debuganalyzer/gui/chart/Jamfile b/src/apps/debuganalyzer/gui/chart/Jamfile index b249153..6a611cd 100644 --- a/src/apps/debuganalyzer/gui/chart/Jamfile +++ b/src/apps/debuganalyzer/gui/chart/Jamfile @@ -4,9 +4,6 @@ UsePrivateHeaders shared ; UseHeaders $(HAIKU_DEBUG_ANALYZER_HEADERS) ; -CCFLAGS += -Werror ; -C++FLAGS += -Werror ; - MergeObject DebugAnalyzer_gui_chart.o : BigtimeChartAxisLegendSource.cpp diff --git a/src/apps/debuganalyzer/gui/main_window/Jamfile b/src/apps/debuganalyzer/gui/main_window/Jamfile index d045a19..2479331 100644 --- a/src/apps/debuganalyzer/gui/main_window/Jamfile +++ b/src/apps/debuganalyzer/gui/main_window/Jamfile @@ -7,9 +7,6 @@ UseHeaders $(HAIKU_DEBUG_ANALYZER_HEADERS) ; UseHeaders [ FDirName $(HAIKU_TOP) src apps debugger util ] ; -CCFLAGS += -Werror ; -C++FLAGS += -Werror ; - MergeObject DebugAnalyzer_gui_main_window.o : GeneralPage.cpp diff --git a/src/apps/debuganalyzer/gui/table/Jamfile b/src/apps/debuganalyzer/gui/table/Jamfile index f55bca6..da838b9 100644 --- a/src/apps/debuganalyzer/gui/table/Jamfile +++ b/src/apps/debuganalyzer/gui/table/Jamfile @@ -5,9 +5,6 @@ UsePrivateSystemHeaders ; UseHeaders $(HAIKU_DEBUG_ANALYZER_HEADERS) ; -CCFLAGS += -Werror ; -C++FLAGS += -Werror ; - MergeObject DebugAnalyzer_gui_table.o : AbstractTable.cpp diff --git a/src/apps/debuganalyzer/gui/thread_window/Jamfile b/src/apps/debuganalyzer/gui/thread_window/Jamfile index 3e171d0..5a96ee6 100644 --- a/src/apps/debuganalyzer/gui/thread_window/Jamfile +++ b/src/apps/debuganalyzer/gui/thread_window/Jamfile @@ -5,9 +5,6 @@ UsePrivateSystemHeaders ; UseHeaders $(HAIKU_DEBUG_ANALYZER_HEADERS) ; -CCFLAGS += -Werror ; -C++FLAGS += -Werror ; - MergeObject DebugAnalyzer_gui_thread_window.o : ActivityPage.cpp diff --git a/src/apps/debuganalyzer/model/Jamfile b/src/apps/debuganalyzer/model/Jamfile index 165c2f6..22e4db7 100644 --- a/src/apps/debuganalyzer/model/Jamfile +++ b/src/apps/debuganalyzer/model/Jamfile @@ -5,9 +5,6 @@ UsePrivateSystemHeaders ; UseHeaders $(HAIKU_DEBUG_ANALYZER_HEADERS) ; -CCFLAGS += -Werror ; -C++FLAGS += -Werror ; - MergeObject DebugAnalyzer_model.o : Model.cpp diff --git a/src/apps/debuganalyzer/model_loader/Jamfile b/src/apps/debuganalyzer/model_loader/Jamfile index ed9888b..af86019 100644 --- a/src/apps/debuganalyzer/model_loader/Jamfile +++ b/src/apps/debuganalyzer/model_loader/Jamfile @@ -5,9 +5,6 @@ UsePrivateSystemHeaders ; UseHeaders $(HAIKU_DEBUG_ANALYZER_HEADERS) ; -CCFLAGS += -Werror ; -C++FLAGS += -Werror ; - MergeObject DebugAnalyzer_model_loader.o : AbstractModelLoader.cpp diff --git a/src/apps/debuganalyzer/util/Jamfile b/src/apps/debuganalyzer/util/Jamfile index 8a5316a..fd6ab0c 100644 --- a/src/apps/debuganalyzer/util/Jamfile +++ b/src/apps/debuganalyzer/util/Jamfile @@ -5,9 +5,6 @@ UsePrivateSystemHeaders ; UseHeaders $(HAIKU_DEBUG_ANALYZER_HEADERS) ; -CCFLAGS += -Werror ; -C++FLAGS += -Werror ; - MergeObject DebugAnalyzer_util.o : DataSource.cpp diff --git a/src/apps/debugger/Jamfile b/src/apps/debugger/Jamfile index 912e0cb..d196d25 100644 --- a/src/apps/debugger/Jamfile +++ b/src/apps/debugger/Jamfile @@ -1,8 +1,5 @@ SubDir HAIKU_TOP src apps debugger ; -CCFLAGS += -Werror ; -C++FLAGS += -Werror ; - UseHeaders [ FDirName $(HAIKU_TOP) headers compatibility bsd ] : true ; # for syscall_numbers.h diff --git a/src/apps/debugger/arch/x86/disasm/Jamfile b/src/apps/debugger/arch/x86/disasm/Jamfile index 0b40f9f..284eac6 100644 --- a/src/apps/debugger/arch/x86/disasm/Jamfile +++ b/src/apps/debugger/arch/x86/disasm/Jamfile @@ -1,8 +1,5 @@ SubDir HAIKU_TOP src apps debugger arch x86 disasm ; -CCFLAGS += -Werror ; -C++FLAGS += -Werror ; - UsePrivateHeaders shared ; UseHeaders [ LibraryHeaders udis86 ] ; diff --git a/src/apps/debugger/arch/x86_64/disasm/Jamfile b/src/apps/debugger/arch/x86_64/disasm/Jamfile index 7424d3d..9b1289e 100644 --- a/src/apps/debugger/arch/x86_64/disasm/Jamfile +++ b/src/apps/debugger/arch/x86_64/disasm/Jamfile @@ -1,8 +1,5 @@ SubDir HAIKU_TOP src apps debugger arch x86_64 disasm ; -CCFLAGS += -Werror ; -C++FLAGS += -Werror ; - UsePrivateHeaders shared ; UseHeaders [ LibraryHeaders udis86 ] ; diff --git a/src/apps/debugger/demangler/Jamfile b/src/apps/debugger/demangler/Jamfile index 613c6aa..d71c877 100644 --- a/src/apps/debugger/demangler/Jamfile +++ b/src/apps/debugger/demangler/Jamfile @@ -1,8 +1,5 @@ SubDir HAIKU_TOP src apps debugger demangler ; -CCFLAGS += -Werror ; -C++FLAGS += -Werror ; - SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src add-ons kernel debugger demangle ] ; diff --git a/src/apps/debugger/dwarf/Jamfile b/src/apps/debugger/dwarf/Jamfile index 0efb29c..4cf6b78 100644 --- a/src/apps/debugger/dwarf/Jamfile +++ b/src/apps/debugger/dwarf/Jamfile @@ -1,8 +1,5 @@ SubDir HAIKU_TOP src apps debugger dwarf ; -CCFLAGS += -Werror ; -C++FLAGS += -Werror ; - UsePrivateHeaders kernel shared ; UsePrivateSystemHeaders ; ############################################################################ Commit: 0fa2d68cdfc5b4c1c1f2c6086aa1f2668696cded Author: Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> Date: Sun Sep 15 01:59:19 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:24 2013 UTC ARM: stub out missing int64 atomic functions Also, add an item to the TODO list for this. Really need to figure it out soon... ---------------------------------------------------------------------------- diff --git a/docs/develop/ports/arm/todo.txt b/docs/develop/ports/arm/todo.txt index e49b6c8..9e73bea 100644 --- a/docs/develop/ports/arm/todo.txt +++ b/docs/develop/ports/arm/todo.txt @@ -1,3 +1,8 @@ +* Determine how to handle atomic functions on ARM. + GCC inlines are not supported, since the instructionset is ill-equiped for + this on older (pre-ARMv7) architectures. We possibly have to do something + similar to the linux kernel helper functions for this.... + * Figure out how to get page flags (modified/accessed) and implement it ;) use unmapped/read-only mappings to trigger soft faults for tracking used/modified flags for ARMv5 and ARMv6 diff --git a/src/system/libroot/os/arch/arm/atomic.S b/src/system/libroot/os/arch/arm/atomic.S index 0127fd0..795e899 100644 --- a/src/system/libroot/os/arch/arm/atomic.S +++ b/src/system/libroot/os/arch/arm/atomic.S @@ -164,83 +164,36 @@ FUNCTION(atomic_get): bx lr FUNCTION_END(atomic_get) +FUNCTION(__sync_fetch_and_add_4): + bx lr +FUNCTION_END(__sync_fetch_and_add_4) /* int64 atomic_add64(vint64 *value, int64 addValue) */ -//FUNCTION(atomic_add64): -// movem.l %d2-%d3/%a2,-(%a7) -// move.l (4,%a7),%a2 -// lea.l (4,%a2),%a1 -// // addValue -// move.l (12,%a7),%d3 /*LSB*/ -// move.l (8,%a7),%d2 /*MSB*/ -//miss5: // old value -// move.l (%a1),%d1 /*LSB*/ -// move.l (%a2),%d0 /*MSB*/ -// add.l %d1,%d3 -// addx.l %d0,%d2 -// cas2.l %d0:%d1,%d2:%d3,(%a2):(%a1) -// bne miss5 -// // return value d0:d1 -// movem.l (%a7)+,%d2-%d3/%a2 [ *** diff truncated: 80 lines dropped *** ] ############################################################################ Commit: ae4ad7037fcbb1e7fefd8d44f2f9f069befab135 Author: Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> Date: Sun Sep 15 02:39:37 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:25 2013 UTC ARM: stub out makebootable so we can build a full haiku-image ---------------------------------------------------------------------------- ############################################################################ Commit: 38bd76a0e5c3d6051d54e00046ec264ed6229f86 Author: Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> Date: Sun Sep 15 02:55:07 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:25 2013 UTC u-boot: make sure host makebootable builds too Somehow missed these few lines in my last commit. ---------------------------------------------------------------------------- ############################################################################ Commit: ed6722adc45b5372f2066d9ff48046100714ac7e Author: Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> Date: Sun Sep 15 05:26:02 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:26 2013 UTC norflash: Add hack to hide start of NOR flash This is a workaround for hiding U-Boot that is stored in the first 2 128k blocks, so we can put a BFS image into NOR to boot from (since we do not have support for SD/MMC yet in Haiku). When manually putting a BFS filesystem at block 3 we actually get right up to the point where BootScript is attempted to be executed! ---------------------------------------------------------------------------- ############################################################################ Commit: 5308f230252c431646f6e4d69c94ff00144482df Author: Jerome Duval <jerome.duval@xxxxxxxxx> Date: Sun Sep 15 09:21:01 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:26 2013 UTC Ticket: https://dev.haiku-os.org/ticket/9589 usb_disk: returns B_DEV_NOT_READY for SCSI_SENSE_KEY_NOT_READY ...instead of B_DEV_NO_MEDIA. The latter seems to imply we stop testing the unit is ready in usb_disk_device_added(). Based on a patch provided by markh in #9589. ---------------------------------------------------------------------------- ############################################################################ Commit: 92ab471c493e3a126e845248eeb2da26f46f9e5e Author: Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> Date: Sun Sep 15 09:31:41 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:26 2013 UTC ntfs: make sure our confidence is higher then the intel partition add-on This as the intel partition addon just does a very weak test, and the NTFS test is much safer. This prevents NTFS filesystems that have a valid boot sector signature but no partition table, from being picked up by the intel partition table add-on instead of the ntfs add-on. Patch provided by markh, thanks! ---------------------------------------------------------------------------- ############################################################################ Commit: dc377ab5225383e027b8840ff3d8a3370b58de5b Author: Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> Date: Sun Sep 15 09:45:40 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:37 2013 UTC Ticket: https://dev.haiku-os.org/ticket/9790 beos_mime: add sniffer rule for .mp3 files Patch from markh (ticket #9790), thanks! ---------------------------------------------------------------------------- ############################################################################ Commit: c75ca47d05137675026a329882cd9a102a06eecd Author: Jerome Duval <jerome.duval@xxxxxxxxx> Date: Sun Sep 15 12:39:56 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:38 2013 UTC dpc: fix comments spelling. ---------------------------------------------------------------------------- ############################################################################ Commit: 02cac492509721580adf7ef2400e7ca5fefa54c6 Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Sun Sep 15 13:32:19 2013 UTC Ticket: https://dev.haiku-os.org/ticket/9960 Debugger: Implement #9960. - DebugReportGenerator now retrieves and dumps disassembly for the crashing function up to the crashing line. ---------------------------------------------------------------------------- ############################################################################ Commit: 779d8213e9fa6de8c43685094de1c69006b99f98 Author: Stephan Aßmus <superstippi@xxxxxx> Date: Sun Sep 15 15:21:11 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:38 2013 UTC HaikuDepot: Use PackageInfoRefs instead of PackageInfos Instead of storing PackageInfo objects directly in the PackageLists, store PackageInfoRefs instead. This makes a lot of operations much cheaper, and it also allows making changes to a PackageInfo (which now exists only once) and have those changes reflect everywhere. In particular, it will be easier to populate some information of the PackageInfo lazily, and to listen for changes on a PackageInfo object. ---------------------------------------------------------------------------- ############################################################################ Commit: 9202a719e143ce324d611990d2fb40939cf7e8c6 Author: Stephan Aßmus <superstippi@xxxxxx> Date: Sun Sep 15 15:24:15 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:39 2013 UTC HaikuDepot: Add interface for PackageInfoListener. Also defines PackageInfoEvent. ---------------------------------------------------------------------------- ############################################################################ Commit: 697c0d7c63ed9ffdbdfa36451673c2193018b2e4 Author: Jerome Duval <jerome.duval@xxxxxxxxx> Date: Sun Sep 15 13:22:43 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:39 2013 UTC Ticket: https://dev.haiku-os.org/ticket/9956 hdaudio: check pin sense on init, don't wait for a switch event with headphones plugged on boot, sound was still enabled on speakers. see #9956 ---------------------------------------------------------------------------- ############################################################################ Commit: 92dbf1869ff45b8df5396f6d22e798bcef1682c4 Author: Stephan Aßmus <superstippi@xxxxxx> Date: Sun Sep 15 15:46:01 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:40 2013 UTC HaikuDepot: Added some listener support to PackageInfo ---------------------------------------------------------------------------- ############################################################################ Commit: 1c38517e256ac29d81f2b36e896200faefb8043e Author: Siarzhuk Zharski <zharik@xxxxxx> Date: Sun Sep 15 21:39:44 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:40 2013 UTC ListView: More safe ScrollToSelection implementation The Problem was observed in the Time Preferences Zone view - the selection was set inside of TimeZoneView::DoLayout() call on the OutlineListView control that had zero-sized Bounds. After the control was resized the selection stay mainly hidden "under" the upper edge. The Problem looks like generic so should be fixed in the interface kit code. Proposed fix introduces additional check for the scroll position to not cross the top edge of control. ---------------------------------------------------------------------------- ############################################################################ Commit: 6b48fa0994c9fe5cadb92141f198a05e8a9cc586 Author: Jerome Duval <jerome.duval@xxxxxxxxx> Date: Mon Sep 16 09:47:23 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:40 2013 UTC usb_disk: fixes 64bit trace build ---------------------------------------------------------------------------- ############################################################################ Commit: 1a07e84d0381f46de01d03c55648288294f95e56 Author: Jerome Duval <jerome.duval@xxxxxxxxx> Date: Mon Sep 16 11:27:42 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:40:41 2013 UTC usb_disk: fixed mounting a USB disk on x86_64 * usb_disk_prepare_partial_buffer() was miscalculating the offset in the temp buffer, which led to a page fault later when copying to the user buffer. ---------------------------------------------------------------------------- ############################################################################ Commit: 8f284ef32d8597ac987aa0ba1c84c7b90c866961 Author: Jerome Duval <jerome.duval@xxxxxxxxx> Date: Mon Sep 16 13:05:28 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:41:58 2013 UTC intel_extreme: don't expose overlay in accelerant when not allocated ... in the driver. ---------------------------------------------------------------------------- ############################################################################ Commit: af8e2aa4736c69637c294b3b6351243e9c7551fd Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Mon Sep 16 11:28:28 2013 UTC Debugger: add settings manager for source location mappings. - If it was necessary to help the debugger locate a particular source file due to it not being found on disk at the location specified in the debug information, the associated user-supplied path mappings are now saved and restored in the team settings. The file manager still needs a bit of extra work to apply these as files are added though. ---------------------------------------------------------------------------- ############################################################################ Commit: 64aae117163474939e8936d01980afe50989636f Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Mon Sep 16 13:21:18 2013 UTC Fix incorrect name usage. ---------------------------------------------------------------------------- ############################################################################ Commit: ad054cf1e108c98b3a9ea22f3ee74ff800c1fa81 Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Mon Sep 16 13:22:05 2013 UTC Ticket: https://dev.haiku-os.org/ticket/9961 Debugger: Implement #9961. - FileManager now saves any explicitly located file mappings, and properly restores them when reloading the same team/files later. ---------------------------------------------------------------------------- ############################################################################ Commit: f7e1dc6c46f33a4ca2ab7f46f4bb1320c4e26011 Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Mon Sep 16 17:45:27 2013 UTC Debugger: Add selection support to MemoryView. - The Inspector's memory view now supports selecting chunks of the hex display in the manner one would in a TextView. The selection can also be copied to the clipboard, or if it matches the size of a target address, can be used as input for an address to inspect directly. Still needs some fine tuning, but basically works. ---------------------------------------------------------------------------- ############################################################################ Commit: 59cef1fa18eb75ea568bb72324bbbb91b1f156ad Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Mon Sep 16 17:59:33 2013 UTC Build fix. ---------------------------------------------------------------------------- ############################################################################ Commit: 153c6c4a405b45c7f7c50de381ec54ddf70075e4 Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Mon Sep 16 18:22:24 2013 UTC Debugger: Fix data copy issue. - B_PRIx8 unfortunately doesn't necessarily strictly stay within the bounds of an 8-bit hex constant, so force the size passed to snprintf to make it that way. ---------------------------------------------------------------------------- ############################################################################ Commit: 62b27e62773b40f3922c6a7a24d9b095f2beb187 Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Mon Sep 16 19:28:19 2013 UTC Fix previous format problem more correctly. Thanks Ingo, Oliver and Ithamar for the hint. ---------------------------------------------------------------------------- ############################################################################ Commit: 7eec822d5eb456c78ffeb5c048e7fa1c9885e13b Author: Stephan Aßmus <superstippi@xxxxxx> Date: Mon Sep 16 20:07:43 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:42:01 2013 UTC HaikuDepot: Package information can be retrieved asynchronously ---------------------------------------------------------------------------- ############################################################################ Commit: b9898c45f4c66e02becc8d462481767d6522269e Author: Stephan Aßmus <superstippi@xxxxxx> Date: Mon Sep 16 20:11:06 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:42:01 2013 UTC HaikuDepot: Also lock the model when updating the list ---------------------------------------------------------------------------- ############################################################################ Commit: f7628f839d15c4bac0d6b4dfa11683c21eb448b7 Author: Stephan Aßmus <superstippi@xxxxxx> Date: Mon Sep 16 20:17:42 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:42:02 2013 UTC HaikuDepot: Fixed selecting the right package when the list is sorted. ---------------------------------------------------------------------------- ############################################################################ Commit: 72b9e4a7bc98fc13f830ce4ba787cbc571ef3845 Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Mon Sep 16 20:38:29 2013 UTC Fix gcc2 build. ---------------------------------------------------------------------------- ############################################################################ Commit: ed6f171aa6886208a0a2f2e695fbee97133ca3aa Author: Stephan Aßmus <superstippi@xxxxxx> Date: Mon Sep 16 21:16:52 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:42:03 2013 UTC BColumnListView: Enable invalidating rows, fix SetField() * Seems like there was no easy way to simply invalidate a given BRow. Introduced BColumnListView::InvalidateRow(). * BRow::SetField() tried to invalidate the row, but invalidated the listview instead of the BOutlineView responsible for drawing the list contents. Use the new InvaalidateRow(). ---------------------------------------------------------------------------- ############################################################################ Commit: b748950b74ee3eb558d66fcd9cc3fae8b0f91adf Author: Stephan Aßmus <superstippi@xxxxxx> Date: Mon Sep 16 21:18:59 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:42:03 2013 UTC HaikuDepot: Update package list when necessary * Pass the Model lock to the PackageListView. * Register a PackageInfoListener with every listed package. * Update the rating when it is fetched. ---------------------------------------------------------------------------- ############################################################################ Commit: 533036dde7b27174e71d77f202ed94fc4d6e2fd1 Author: Pawel Dziepak <pdziepak@xxxxxxxxxxx> Date: Mon Sep 16 21:08:46 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:42:03 2013 UTC libroot: Make sure PTHREAD_STACK_MIN is in the allowed range ---------------------------------------------------------------------------- ############################################################################ Commit: 772568c4764cfe4212b5940b124545b2f8d12862 Author: Pawel Dziepak <pdziepak@xxxxxxxxxxx> Date: Mon Sep 16 21:16:29 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:42:04 2013 UTC system: Use B_PAGE_SIZE to define stack sizes As korli suggested use B_PAGE_SIZE for defining stack size related definitions what seems to be more natural for them and also may help if we ever support an architecture with page size different than 4kB. ---------------------------------------------------------------------------- ############################################################################ Commit: 4efb0a6d36d18fb00249cd0aeee4309956515ae4 Author: Pawel Dziepak <pdziepak@xxxxxxxxxxx> Date: Mon Sep 16 21:19:23 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:42:04 2013 UTC posix: Update PTHREAD_STACK_MIN to match MIN_USER_STACK_SIZE Thanks for pointing this out Pete! ---------------------------------------------------------------------------- ############################################################################ Commit: c315b2b18a49cad52fcde98d66b304b924977c5c Author: John Scipione <jscipione@xxxxxxxxx> Date: Mon Sep 16 22:45:56 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:42:05 2013 UTC Revert "ScreenSaver: ScrollToSelection off-by-one" This reverts commit fb90f7ffe49c07e82cd8cf68012929c87319f656. Underlying issue fixed in hrev46066 ---------------------------------------------------------------------------- ############################################################################ Commit: 4f4270c9902b587f017ff9ea3343ed535baa6f6b Author: Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> Date: Tue Sep 17 00:42:58 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:42:05 2013 UTC loader/u-boot: fix alignment of uimage components. The "blobs" in a U-Boot uimage are aligned at 4 bytes, which we did not take into account. Found this when adding a 3rd blob containing the Flattened Device Tree for ARM. ---------------------------------------------------------------------------- ############################################################################ Commit: ba06f0766073168cc42458c6327f6703de21943f Author: Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> Date: Tue Sep 17 01:03:17 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:42:05 2013 UTC ARM: kernel: fix timer resolution and implement basic timekeeping. The previously used method for programming the timer did not take into account that our timespec is 64bit while the register we poke it into is 32 bit. Since the PXA (SoC in Verdex target) has a limited scale of resolution (us,ms,second) we dynamicly determine the one that we can most closely match, and set that. For f.ex. snooze to work however, we also need system_time to work. The current implementation uses a system timer at microsecond resolution to keep track of time. Although the code is far from perfect, committing it now before it gets lost, since I'm working on the infrastructure code to properly factor out the SoC specific code out of the core ARM architecture code (so the kernel can support more then our poor old Verdex QEMU target ;)) ---------------------------------------------------------------------------- ############################################################################ Commit: 102ce4652adf3c3a4d74770d7e1c1c8efdbdaf46 Author: Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> Date: Tue Sep 17 03:26:29 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:42:06 2013 UTC norflash: do not accept any device as a valid 'norflash' Seems the original code was a little *too* simple ;-) ---------------------------------------------------------------------------- ############################################################################ Commit: dfa5aa0c9875001fa3508463f61862ba580952f0 Author: Ithamar R. Adema <ithamar@xxxxxxxxxxxxxxxxxxx> Date: Tue Sep 17 03:50:05 2013 UTC Committer: Rene Gollent <anevilyak@xxxxxxxxx> Commit-Date: Tue Sep 17 12:42:06 2013 UTC device_manager: Move init_node_tree to after kdl cmd registration This helps when debugging, since when a driver/module causes a crash while registering with the device manager, you can actually look at the device manager state ;-) ---------------------------------------------------------------------------- ############################################################################ Commit: 2c130f09bfff272fc3a473006b86687c012bccc7 Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Tue Sep 17 09:14:38 2013 UTC Debugger: Fix calculation in MemoryView. - The offset calculation for mapping the current point wasn't taking into account the number of bytes per hex block, causing it to be proportionally further off if one switched to 16/32/64-bit hex mode. Gets mouse selection working properly in said modes. ---------------------------------------------------------------------------- ############################################################################ Commit: 98c5cb26829c1ad0d6664a5c397568cdfe8d40f8 Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Tue Sep 17 09:17:31 2013 UTC Debugger: Fix RegistersView context menu. - Always grab the address value from the actual register value column, rather than the one that's in fact under the mouse. Fixes the "Inspect" item sending you to inspect address 0 if you happened to right click over the register name rather than the value. ---------------------------------------------------------------------------- ############################################################################ Commit: 89d18e912dfef6f0791f586d67b7f91cba30e969 Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Tue Sep 17 10:07:52 2013 UTC Debugger: MemoryView - Tweak target address drawing. - Since we actually draw a selection now, change the target address highlight to clearly distinguish it. Rather than inverting it, it's now drawn with a normal background and red text in the hex display. The text mode subcomponent still shows it as an invert though, since the latter doesn't currently indicate the selection. ---------------------------------------------------------------------------- ############################################################################ Commit: eeebe2843a61c82661720930ee0002b0a5b53ced Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Tue Sep 17 12:04:41 2013 UTC Manually merge 1410faca6c30d39dc08a7bf7caa7630ce5a16d35. ----------------------------------------------------------------------------