Third revision of IMS signaling course. The lecture was part of the communication protocols class 2014 delivered to students from FIIT STU Bratislava, Slovakia and University Zilina, Slovakia.
Third revision of IMS signaling course. The lecture was part of the communication protocols class 2014 delivered to students from FIIT STU Bratislava, Slovakia and University Zilina, Slovakia.
Time Sensitive Networking in the Linux Kernelhenrikau
Time Sensitive Networking provides mechanisms for sending data accross the network with very low latency, low jitter and low framedrops, opening up a whole range of new applications.
This talk primarily focuses on media, but the driver should be interesting for industrial applications and automotive as well.
Simplified Call Flow Signaling: Registration - The Attach Procedure3G4G
This presentation/video provides an example of the registration procedure. The device or UE needs to let the core network(s) know that it is switched on and active. This procedure is known as registration. The UE can register individually to the CS and PS core networks. Most modern networks allow combined registration (or combined attach) whereby the UE registers only to the PS network and the PS network informs the CS network that the UE is active.
It discusses about the 3G call flow scenarios for both the Circuit Switched (CS) and Packet Switched (PS). Calls are mobile originated. Call making and call tear down both are discussed.
VoLTE Basic callflows in IMS network v2 - includes Registration, Basic VoLTE Call, SDP, Interconnect, Roaming, highlights important SIP headers for session routing and user identities.
Time Sensitive Networking in the Linux Kernelhenrikau
Time Sensitive Networking provides mechanisms for sending data accross the network with very low latency, low jitter and low framedrops, opening up a whole range of new applications.
This talk primarily focuses on media, but the driver should be interesting for industrial applications and automotive as well.
Simplified Call Flow Signaling: Registration - The Attach Procedure3G4G
This presentation/video provides an example of the registration procedure. The device or UE needs to let the core network(s) know that it is switched on and active. This procedure is known as registration. The UE can register individually to the CS and PS core networks. Most modern networks allow combined registration (or combined attach) whereby the UE registers only to the PS network and the PS network informs the CS network that the UE is active.
It discusses about the 3G call flow scenarios for both the Circuit Switched (CS) and Packet Switched (PS). Calls are mobile originated. Call making and call tear down both are discussed.
VoLTE Basic callflows in IMS network v2 - includes Registration, Basic VoLTE Call, SDP, Interconnect, Roaming, highlights important SIP headers for session routing and user identities.
Before you submitting your application on TIZEN STORE and distribute it to users, you need to confirm if your application is secure and reliable to users.
This slide summarizes some of the tasks you'll need to complete before publishing your application on TIZEN STORE, such as understanding the functional or
legal requirements of the application, and TIZEN STORE policies on content.
Contributing to Automotive Grade Linux (AGL) and GENIVI Development Platform ...Leon Anavi
Presentation from Embedded Linux Conference 2017 in Portland, Oregon (21-23 February) about contributing to Automotive Grade Linux (AGL) and GENIVI Development Platform (GDP).
This introduces the linaro OP-TEE project in the context of the Automotive Grade Linux distribution. This TEE is today considered as a potential key element to provides some security enforcement in the scope of Software OTA for the AGL distribution.
This brief slides set was presented during AGL Face to Face Technical Meeting 25 – 27 May, Vannes, France
LAS16-203: Platform security architecture for embedded devicesLinaro
LAS16-203: Platform security architecture for embedded devices
Speakers: Mark Hambleton
Date: September 27, 2016
★ Session Description ★
Heads up on what ARM are doing with the new ARMv8-M architecture from a software perspective.
★ Resources ★
Etherpad: pad.linaro.org/p/las16-203
Presentations & Videos: http://connect.linaro.org/resource/las16/las16-203/
★ Event Details ★
Linaro Connect Las Vegas 2016 – #LAS16
September 26-30, 2016
http://www.linaro.org
http://connect.linaro.org
LAS16-111: Easing Access to ARM TrustZone – OP-TEE and Raspberry Pi 3Linaro
LAS16-111: Raspberry Pi3, OP-TEE and JTAG debugging
Speakers:
Date: September 26, 2016
★ Session Description ★
ARM TrustZone is a critical technology for securing IoT devices and systems. But awareness of TrustZone and its benefits lags within the maker community as well as among enterprises. The first step to solving this problem is lowering the cost of access. Sequitur Labs and Linaro have joined forces to address this problem by making a port of OP-TEE available on the Raspberry Pi 3. The presentation covers the value of TrustZone for securing IoT and how customers can learn more through this joint effort.
Embedded systems security remains a challenge for many developers. Awareness of mature, proven technologies such as ARM TrustZone is very low among the Maker community as well as among enterprises. As a result this foundational technology is largely being ignored as a security solution. Sequitur Labs and Linaro have taken an innovative approach combining an Open Source solution – OP-TEE with Raspberry Pi 3. The Raspberry Pi 3 is one of the world’s most popular platforms among device makers. Its value as an educational tool for learning about embedded systems development is proven.
Sequitur Labs have also enabled bare metal debugging via JTag on the Pi 3 enhancing the value of the Pi 3 as an educational tool for embedded systems development.
The presentation will focus on
ARM v8a architecture and instruction set
ARM Trusted Firmware
TrustZone and OP-TEE basics
JTAG and bare metal debugging the Raspberry Pi 3
★ Resources ★
Etherpad: pad.linaro.org/p/las16-111
Presentations & Videos: http://connect.linaro.org/resource/las16/las16-111/
★ Event Details ★
Linaro Connect Las Vegas 2016 – #LAS16
September 26-30, 2016
http://www.linaro.org
http://connect.linaro.org
x86-64 is a superset of the x86 instruction set architecture. x86-64 processors can run existing 32-bit or 16-bit x86 programs at full speed, but also support new programs written with a 64-bit address space and other additional capabilities.
Video: https://www.youtube.com/watch?v=JRFNIKUROPE . Talk for linux.conf.au 2017 (LCA2017) by Brendan Gregg, about Linux enhanced BPF (eBPF). Abstract:
A world of new capabilities is emerging for the Linux 4.x series, thanks to enhancements that have been included in Linux for to Berkeley Packet Filter (BPF): an in-kernel virtual machine that can execute user space-defined programs. It is finding uses for security auditing and enforcement, enhancing networking (including eXpress Data Path), and performance observability and troubleshooting. Many new open source tools that have been written in the past 12 months for performance analysis that use BPF. Tracing superpowers have finally arrived for Linux!
For its use with tracing, BPF provides the programmable capabilities to the existing tracing frameworks: kprobes, uprobes, and tracepoints. In particular, BPF allows timestamps to be recorded and compared from custom events, allowing latency to be studied in many new places: kernel and application internals. It also allows data to be efficiently summarized in-kernel, including as histograms. This has allowed dozens of new observability tools to be developed so far, including measuring latency distributions for file system I/O and run queue latency, printing details of storage device I/O and TCP retransmits, investigating blocked stack traces and memory leaks, and a whole lot more.
This talk will summarize BPF capabilities and use cases so far, and then focus on its use to enhance Linux tracing, especially with the open source bcc collection. bcc includes BPF versions of old classics, and many new tools, including execsnoop, opensnoop, funcccount, ext4slower, and more (many of which I developed). Perhaps you'd like to develop new tools, or use the existing tools to find performance wins large and small, especially when instrumenting areas that previously had zero visibility. I'll also summarize how we intend to use these new capabilities to enhance systems analysis at Netflix.
Making OpenBSD Useful on the Octeon Network Gear by Paul Iroftieurobsdcon
Abstract
My work on the Octeon port made possible for OpenBSD to run on the D-Link DSR line of mid-range routers and also improved all supported models through the drivers I wrote. I'm continuing my work on improving the OpenBSD experience on the Octeon products by enhancing network support (including advanced switch support among other things) and adding disk support via USB and CFI. This presentation summarizes the developments I brought and the obstacles I faced.
Speaker bio
Paul is an OpenBSD developer since 2008, involved in ACPI, suspend and resume, power management, mips64, porting and currently with a keen interest in the Loongson and Octeon platforms. Currently he's a freelancer and also studying for his PhD in Parallel Algorithms for Signal Processing. In the past he worked for a telephony company developing VoIP, Voicemail and related software and after that as an antivirus engine developer and reverse engineer. In his spare time he enjoys a good game of Go, running or hiking.
The slides from Software Diagnostics Services seminar (30th of December 2013) about physical memory analysis on desktop and server Windows platforms (a revised version of the previous seminars on complete crash and hang memory dump analysis). Topics include: memory acquisition and its tricks; user vs. kernel vs. physical memory space; fibre bundle space; challenges of physical memory analysis; common WinDbg commands; memory analysis patterns and their classification; common mistakes; a hands-on WinDbg analysis example with logs; a guide to further study.
Palestra realizada por Toronto Garcez aka torontux durante a 3a. edição da Nullbyte Security Conference em 26 de novembro de 2016.
Resumo:
O objetivo da apresentação é demonstrar de forma prática, o passo-a-passo para criar uma botnet com roteadores wi-fi e/ou embarcados em geral. Será demonstrado o desenvolvimento de um comando e controle e a utilização de firmwares "backdorados" para tornar dispositivos em bots.
Exploring Parallel Merging In GPU Based Systems Using CUDA C.Rakib Hossain
We present a program that implemented to execute Adaptive merge sort algorithm in parallel on a GPU based system. Parallel implementation is used to get better performance than serial implementation in runtime perspective. Parallel implementation executes independent executable operation in parallel using large number of cores in GPU based system. Results from a parallel implementation of the algorithm is given and compared with its serial implementation on run time basis. The parallel version is implemented with CUDA platform in a system based on NVIDIA GPU (GTX 650)
An Essential Relationship between Real-time and Resource PartitioningYoshitake Kobayashi
(ELC Europe 2013)
Running real-time and general purpose applications on a same hardware is normally a crazy idea in most case. However, we strongly focus to run both applications on a hardware without virtualization. Resource Partitioning enables the assignment of hardware resource (e.g.: core, execution time, memory bandwidth or device access) to processes with special requirements (e.g: real-time performance or safety requirements).
In this talk, we would like to discuss current limitation on Linux kernel and describe how to solve it.
OSMC 2015: Linux Performance Profiling and Monitoring by Werner FischerNETWAYS
Nowadays system administrators have great choices when it comes down to Linux performance profiling and monitoring. The challenge is to pick the appropriate tools and interpret their results correctly.
This talk is a chance to take a tour through various performance profiling and benchmarking tools, focusing on their benefit for every sysadmin.
More than 25 different tools are presented. Ranging from well known tools like strace, iostat, tcpdump or vmstat to new features like Linux tracepoints or perf_events. You will also learn which tools can be monitored by Icinga and which monitoring plugins are already available for that.
At the end the goal is to gather reference points to look at, whenever you are faced with performance problems.
Take the chance to close your knowledge gaps and learn how to get the most out of your system.
OSSNA 2017 Performance Analysis Superpowers with Linux BPFBrendan Gregg
Talk by Brendan Gregg for OSSNA 2017. "Advanced performance observability and debugging have arrived built into the Linux 4.x series, thanks to enhancements to Berkeley Packet Filter (BPF, or eBPF) and the repurposing of its sandboxed virtual machine to provide programmatic capabilities to system tracing. Netflix has been investigating its use for new observability tools, monitoring, security uses, and more. This talk will be a dive deep on these new tracing, observability, and debugging capabilities, which sooner or later will be available to everyone who uses Linux. Whether you’re doing analysis over an ssh session, or via a monitoring GUI, BPF can be used to provide an efficient, custom, and deep level of detail into system and application performance.
This talk will also demonstrate the new open source tools that have been developed, which make use of kernel- and user-level dynamic tracing (kprobes and uprobes), and kernel- and user-level static tracing (tracepoints). These tools provide new insights for file system and storage performance, CPU scheduler performance, TCP performance, and a whole lot more. This is a major turning point for Linux systems engineering, as custom advanced performance instrumentation can be used safely in production environments, powering a new generation of tools and visualizations."
Title: Gemtalk Systems Product Roadmap
Speaker: Norm Green
Thu, August 21, 9:00am – 9:45am
Video Part1: https://www.youtube.com/watch?v=PTLzyjrml7g
Video Part2: https://www.youtube.com/watch?v=w9ya2-xRopM
Description
Norm Green started his career in 1989 at IBM in Toronto, Canada as a quality assurance engineer. In 1993, he moved to the DACS (Data Acquisition and Control System) team where he helped design and build site-wide data collection system in VisualWorks and GemStone/S .
In 1996, he joined GemStone Systems as a Senior Consultant and traveled the world helping GemStone/S customers be more successful.
Within GemStone Systems, Norm held several positions including Director of Professional Services and Director of Engineering.
OSDC 2017 - Werner Fischer - Linux performance profiling and monitoringNETWAYS
Nowadays system administrators have great choices when it comes down to Linux performance profiling and monitoring. The challenge is to pick the appropriate tools and interpret their results correctly.
This talk is a chance to take a tour through various performance profiling and benchmarking tools, focusing on their benefit for every sysadmin.
More than 25 different tools are presented. Ranging from well known tools like strace, iostat, tcpdump or vmstat to new features like Linux tracepoints or perf_events. You will also learn which tools can be monitored by Icinga and which monitoring plugins are already available for that.
At the end the goal is to gather reference points to look at, whenever you are faced with performance problems.
Take the chance to close your knowledge gaps and learn how to get the most out of your system.
The reasons why 64-bit programs require more stack memoryPVS-Studio
In forums, people often say that 64-bit versions of programs consume a larger amount of memory and stack. Saying so, they usually argue that the sizes of data have become twice larger. But this statement is unfounded since the size of most types (char, short, int, float) in the C/C++ language remains the same on 64-bit systems. Of course, for instance, the size of a pointer has increased but far not all the data in a program consist of pointers. The reasons why the memory amount consumed by programs has increased are more complex. I decided to investigate this issue in detail.
Linux 4.x Tracing: Performance Analysis with bcc/BPFBrendan Gregg
Talk about bcc/eBPF for SCALE15x (2017) by Brendan Gregg. "BPF (Berkeley Packet Filter) has been enhanced in the Linux 4.x series and now powers a large collection of performance analysis and observability tools ready for you to use, included in the bcc (BPF Complier Collection) open source project. BPF nowadays can do system tracing, software defined networks, and kernel fast path: much more than just filtering packets! This talk will focus on the bcc/BPF tools for performance analysis, which make use of other built in Linux capabilities: dynamic tracing (kprobes and uprobes) and static tracing (tracepoints and USDT). There are now bcc tools for measuring latency distributions for file system I/O and run queue latency, printing details of storage device I/O and TCP retransmits, investigating blocked stack traces and memory leaks, and a whole lot more. These lead to performance wins large and small, especially when instrumenting areas that previously had zero visibility. Tracing superpowers have finally arrived, built in to Linux."
Industry Insights Common Pitfalls and Key Considerations in Using Software Bi...SZ Lin
Modern regulations and cybersecurity standards globally now require a Software Bill of Materials (SBOM) with specific details. As a result, many companies are adopting SBOMs. Yet, compliance isn't merely technical. It involves process, inter-departmental, and supply chain communication challenges. This session explores these SBOM challenges and provides insights for effective use. Many perceive the SBOM simply as an inventory, neglecting its significance in software management, component tracking, vulnerability assessments, and compliance assurance. While automation streamlines processes, an over-reliance can miss software intricacies; thus, manual reviews remain indispensable. Assuming an SBOM alone ensures a secure software supply chain is a misconception. Though pivotal in risk identification, SBOMs form just a facet of an overarching security strategy, demanding consistent updates to counteract emerging threats. By sidestepping common missteps and adopting best practices, SBOMs can evolve from simple documentation to indispensable tools for software governance and safeguarding.
Manage kernel vulnerabilities in the software development lifecycleSZ Lin
This slide deck aims to introduce the methodology in managing the Linux kernel vulnerabilities in the software development lifecycle (SLDC) to reduce the maintenance effort.
OpenChain, the ISO standard, defines effective open source compliance. This slide deck aims to let people get familiar with OpenChain specification from scratch.
OpenChain - The Industry Standard for Open Source ComplianceSZ Lin
OpenChain is a legal compliance process and standard for the implementation of open source software in the enterprise supply chain. It enables the upstream and downstream of the software supply to follow and share the open source compliance obligations accordingly; moreover, it can also help the enterprises to collaborate with the open source communities positively.
Design, Build,and Maintain the Embedded Linux PlatformSZ Lin
Using open source software to build an embedded Linux platform from scratch.
Building an embedded Linux platform is like a puzzle; placing the suitable software components in the right positions will constitute an optimal platform. However, selecting suitable components is difficult since it depends on different application scenarios. The essential components of an embedded Linux platform include the bootloader, Linux kernel, toolchain, root filesystem; it also needs the tools for image generation, upgrades, and testing. There are abundant resources in the Linux ecosystem with these components and tools; however, selecting the suitable modules and tools is still a key challenge for system designers.
Using open source software to build an industrial grade embedded linux platfo...SZ Lin
Building an embedded Linux platform is like a puzzle; placing the suitable software components in the right positions will constitute an optimal platform. However, selecting suitable components is difficult since it depends on different application scenarios. The essential components of an embedded Linux platform include the bootloader, Linux kernel, toolchain, root filesystem; it also needs the tools for image generation, upgrades, and testing. There are abundant resources in the Linux ecosystem with these components and tools; however, selecting the suitable modules and tools is still a key challenge for system designers.
Take a step forward from user to maintainer or developer in open source secur...SZ Lin
There are a variety of high-quality open source security-related tools available in penetration testing tools, forensics tools, hardening tools, fuzz tools, and network monitoring tools. These tools could be used freely; however, we might face some issues while using it. Therefore, it is essential to have the ability to maintain or develop these tools. In this slide, SZ Lin introduces Security Tools Packaging Team in Debian; this team aims to maintain collaboratively many security tools and merge back tools packaged by security-oriented Debian derivatives (e.g., Kali). Also, SZ shares the experience in discussing and collaborating with open source maintainers and developers in open source security-related tools.
It's a pivotal challenge to update the software in embedded systems due to many restrictions such as unreliable network and power supply, limited bandwidth, harsh environment, etc. This slide aims to provide the background knowledge and the open source tool to achieve the software update in embedded systems.
Introduction to Civil Infrastructure PlatformSZ Lin
CIP is target to establish an open source base layer of industrial grade software to enable the use and implementation of software. This slide will introduce the current status and road map in CIP
Long-term Maintenance Model of Embedded Industrial Linux DistributionSZ Lin
To introduce a robust, secure and reliable platform for the industrial environments is a key challenge; moreover, the platform needs to survive for a long time (more than 10+ years). There are many good solutions aiming to meet these requirements, such as LTSI (Long Term Support Initiative) and CIP (Civil Infrastructure Platform). However, it still needs a high amount of maintenance and development costs in handling SoC/ hardware board in-house patch, non-upstream driver and keep source code consistent with different SoC and platform afterwards.
In this presentation, SZ Lin will introduce how to operate long-term maintenance model of embedded industrial Linux distribution. In addition, he will also address the building, deploying and testing architecture and workflow for producing a robust, secure and reliable platform.
Building, deploying and testing an industrial linux platform @ Open source su...SZ Lin
To introduce a robust, secure and reliable platform for the industrial environments is a key challenge. Therefore, running with the industrial-grade Linux distribution to fulfill the requirements mentioned above is imperative. The Linux distribution includes the Linux kernel and user space. Based on this testing design, the distribution will be built, deployed and tested in the device under automatic test by using continuous integration development practice to withstand the harsh industrial environments. In this presentation, SZ Lin will introduce how the industrial-grade Linux distribution is built, deployed and tested without human intervention, and review the test scope in both Linux kernel and user space. In addition, he will also address the design architecture of 24/7 long-term automated testing in all device under test with each release of new update.
Cosmetic shop management system project report.pdfKamal Acharya
Buying new cosmetic products is difficult. It can even be scary for those who have sensitive skin and are prone to skin trouble. The information needed to alleviate this problem is on the back of each product, but it's thought to interpret those ingredient lists unless you have a background in chemistry.
Instead of buying and hoping for the best, we can use data science to help us predict which products may be good fits for us. It includes various function programs to do the above mentioned tasks.
Data file handling has been effectively used in the program.
The automated cosmetic shop management system should deal with the automation of general workflow and administration process of the shop. The main processes of the system focus on customer's request where the system is able to search the most appropriate products and deliver it to the customers. It should help the employees to quickly identify the list of cosmetic product that have reached the minimum quantity and also keep a track of expired date for each cosmetic product. It should help the employees to find the rack number in which the product is placed.It is also Faster and more efficient way.
Final project report on grocery store management system..pdfKamal Acharya
In today’s fast-changing business environment, it’s extremely important to be able to respond to client needs in the most effective and timely manner. If your customers wish to see your business online and have instant access to your products or services.
Online Grocery Store is an e-commerce website, which retails various grocery products. This project allows viewing various products available enables registered users to purchase desired products instantly using Paytm, UPI payment processor (Instant Pay) and also can place order by using Cash on Delivery (Pay Later) option. This project provides an easy access to Administrators and Managers to view orders placed using Pay Later and Instant Pay options.
In order to develop an e-commerce website, a number of Technologies must be studied and understood. These include multi-tiered architecture, server and client-side scripting techniques, implementation technologies, programming language (such as PHP, HTML, CSS, JavaScript) and MySQL relational databases. This is a project with the objective to develop a basic website where a consumer is provided with a shopping cart website and also to know about the technologies used to develop such a website.
This document will discuss each of the underlying technologies to create and implement an e- commerce website.
Saudi Arabia stands as a titan in the global energy landscape, renowned for its abundant oil and gas resources. It's the largest exporter of petroleum and holds some of the world's most significant reserves. Let's delve into the top 10 oil and gas projects shaping Saudi Arabia's energy future in 2024.
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdffxintegritypublishin
Advancements in technology unveil a myriad of electrical and electronic breakthroughs geared towards efficiently harnessing limited resources to meet human energy demands. The optimization of hybrid solar PV panels and pumped hydro energy supply systems plays a pivotal role in utilizing natural resources effectively. This initiative not only benefits humanity but also fosters environmental sustainability. The study investigated the design optimization of these hybrid systems, focusing on understanding solar radiation patterns, identifying geographical influences on solar radiation, formulating a mathematical model for system optimization, and determining the optimal configuration of PV panels and pumped hydro storage. Through a comparative analysis approach and eight weeks of data collection, the study addressed key research questions related to solar radiation patterns and optimal system design. The findings highlighted regions with heightened solar radiation levels, showcasing substantial potential for power generation and emphasizing the system's efficiency. Optimizing system design significantly boosted power generation, promoted renewable energy utilization, and enhanced energy storage capacity. The study underscored the benefits of optimizing hybrid solar PV panels and pumped hydro energy supply systems for sustainable energy usage. Optimizing the design of solar PV panels and pumped hydro energy supply systems as examined across diverse climatic conditions in a developing country, not only enhances power generation but also improves the integration of renewable energy sources and boosts energy storage capacities, particularly beneficial for less economically prosperous regions. Additionally, the study provides valuable insights for advancing energy research in economically viable areas. Recommendations included conducting site-specific assessments, utilizing advanced modeling tools, implementing regular maintenance protocols, and enhancing communication among system components.
Overview of the fundamental roles in Hydropower generation and the components involved in wider Electrical Engineering.
This paper presents the design and construction of hydroelectric dams from the hydrologist’s survey of the valley before construction, all aspects and involved disciplines, fluid dynamics, structural engineering, generation and mains frequency regulation to the very transmission of power through the network in the United Kingdom.
Author: Robbie Edward Sayers
Collaborators and co editors: Charlie Sims and Connor Healey.
(C) 2024 Robbie E. Sayers
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Dr.Costas Sachpazis
Terzaghi's soil bearing capacity theory, developed by Karl Terzaghi, is a fundamental principle in geotechnical engineering used to determine the bearing capacity of shallow foundations. This theory provides a method to calculate the ultimate bearing capacity of soil, which is the maximum load per unit area that the soil can support without undergoing shear failure. The Calculation HTML Code included.
Immunizing Image Classifiers Against Localized Adversary Attacksgerogepatton
This paper addresses the vulnerability of deep learning models, particularly convolutional neural networks
(CNN)s, to adversarial attacks and presents a proactive training technique designed to counter them. We
introduce a novel volumization algorithm, which transforms 2D images into 3D volumetric representations.
When combined with 3D convolution and deep curriculum learning optimization (CLO), itsignificantly improves
the immunity of models against localized universal attacks by up to 40%. We evaluate our proposed approach
using contemporary CNN architectures and the modified Canadian Institute for Advanced Research (CIFAR-10
and CIFAR-100) and ImageNet Large Scale Visual Recognition Challenge (ILSVRC12) datasets, showcasing
accuracy improvements over previous techniques. The results indicate that the combination of the volumetric
input and curriculum learning holds significant promise for mitigating adversarial attacks without necessitating
adversary training.
7. “time_t” stores system time
Since: midnight UTC of January 1, 1970
7
The time_t datatype is a data type in the ISO C library and kernel structure
defined for storing system time values.
32-bit system can represent dates from [2]
Dec 13 1901
Jan 19th 2038
It causes integer overflowing on 03:14:08 UTC 19 January 2038
11. Why 32-bit system [1]
11
1
Long-term Support
there are 32-bit systems being deployed now that can be
expected to have lifetimes of 24 years or longer.
2
64-bit is Overkill
32-bit systems are likely to continue to be made for far longer
than most people might expect. (e.g., micro-controller)
12. OpenBSD solution
Be suitable for self-contained system
12
Changes types like
time_t and clock_t
to 64-bit quantities [3]
DANGER:
ABI incompatibility. Updating to this kernel requires extra
work or you won't be able to login: install a snapshot instead.
[3]
19. converting system calls to 64-bit time_t [15]
19
All system calls are changed to 64-bit type and added CONFIG_COMPAT_TIME
for compatibility, but it is not accepted by kernel so far [15]
21. Current Syscall with y2038 (1/4)
syscalls that are impacted by 64-bit time_t [14]
21
class syscall name argument direction replacement range needed
64-bit
argument alternatives
incompatible
args
clocks
time time_t out clock_gettime
stime time_t in clock_settime
gettimeofday timeval out clock_gettime
settimeofday timeval in clock_settime
adjtimex timex inout clock_adjtime
nanosleep timespec inout clock_nanosleep
clock_gettime timespec out 64 timespec64 ktime_t? -
clock_settime timespec inout 64 timespec64 ktime_t? -
clock_adjtime timex inout 64 timex64 ktime_t? -
clock_getres timespec out 32 timespec64 ktime_t? -
clock_nanosleep timespec inout 64 timespec64 ktime_t? -
alarm int in timer_settime
22. Current Syscall with y2038 (2/4)
syscalls that are impacted by 64-bit time_t [14]
22
class syscall name argument direction replacement
range
needed
64-bit
argument alternatives
incompatible
args
timers
getitimer itimerval out timer_gettime
setitimer itimerval inout timer_settime
timer_gettime itimerspec out 64 itimespec64 ktime_t? -
timer_settime itimerspec inout 64 itimespec64 ktime_t? -
timerfd_gettime itimerspec out 64 itimespec64 ktime_t? -
timerfd_settime itimerspec inout 64 itimespec64 ktime_t? -
I/O
select timeval inout pselect6
old_select sel_arg_structinout pselect6
pselect6 timespec inout 32 timespec64 ktime_t? fd_set, sigset
ppoll timespec inout 32 timespec64 ktime_t? sigset
io_getevents timespec in 32 timespec64 ktime_t? -
recvmmsg timespec inout 32 timespec64 ktime_t? mmsghdr
23. Current Syscall with y2038 (3/4)
syscalls that are impacted by 64-bit time_t [14]
23
class syscall name argument direction replacement
range
needed
64-bit
argument alternatives
incompatible
args
ipc
mq_timedsend timespec in 64 timespec64 ktime_t? -
mq_timedreceive timespec in 64 timespec64 ktime_t? -
semtimedop timespec in 32 timespec64 jiffies? -
msgctl msqid_ds out 64 msqid_ds64 - -
semctl semid_ds out 64 semid_ds64 - -
shmctl shmid_ds out 64 shmid_ds64 - -
tasks
rt_sigtimedwait timespec inout 32 timespec64 jiffies? sigset, siginfo
futex timespec in 64 timespec64 ktime_t? -
sched_rr_get_interval timespec out 32 timespec64 leave 32-bit -
getrusage
rusage
(timeval) out 32 rusage64 leave 32-bit -
wait4
rusage
(timeval) out waitid
waitid
rusage
(timeval) out 32 rusage64 leave 32-bit siginfo
system sysinfo sysinfo out 32 leave 32-bit - -
24. Current Syscall with y2038 (4/4)
syscalls that are impacted by 64-bit time_t [14]
24
class syscall name argument direction replacement
range
needed
64-bit
argument alternatives
incompatible
args
inodes
utime utimbuf in utimensat
utimes timeval in utimensat
futimensat timeval in utimensat
utimensat timespec in 64 timespec64 timespec64 -
oldstat
__old_kernel_s
tat out stat64
oldlstat
__old_kernel_s
tat out lstat64
oldfstat
__old_kernel_s
tat out fstat64
newstat stat out stat64
newlstat stat out lstat64
newfstat stat out fstat64
newfstatat stat out fstatat64
stat64 stat64 out fstatat64
lstat64 stat64 out fstatat64
fstat64 stat64 out 64 stat6464 new struct -
fstatat64 stat64 out 64 stat6464 new struct -
26. Fixing filesystem timestamps
EXT4 takes “extra” bit to extend timestamp size to 34-bit
26
Within this "extra" 32-bit field,
the lower two bits are used to
extend the 32-bit seconds field to
be 34 bit wide; the upper 30 bits
are used to provide nanosecond
timestamp accuracy. Therefore,
timestamps should not overflow
until May 2446. [8]
27. Fixing EXT4 timestamps
EXT4 is still not y2038 safe now [10]
27
Patch is ready but not accepted by kernel yet
EXT4 has some y2038 unsafe variables
28. Current filesystem with y2038 (1/3)
Overview of file systems [9]
28
file system time type expiration year
9p (9P2000) unsigned 32-bit seconds 2106
file system time type expiration year
9p (9P2000) unsigned 32-bit seconds 2106
9p (9P2000.L) signed 64-bit seconds, ns never
adfs 40-bit cs since 1900 2248
affs u32 days/mins/(secs/50) 11760870
afs unsigned 32-bit seconds 2106
befs unsigned 48-bit seconds never
bfs unsigned 32-bit seconds 2106
btrfs signed 64-bit seconds, 32-bit ns never
ceph unsigned 32-bit second/ns 2106
cifs (smb) 7-bit years since 1980 2107
cifs (modern) 64-bit 100ns since 1601 30328
coda timespec ioctl 2038
cramfs fixed 1970
efs unsigned 32-bit seconds 2106
exofs signed 32-bit seconds 2038
ext2 signed 32-bit seconds 2038
ext3 signed 32-bit seconds 2038
ext4 (good old inodes) signed 32-bit seconds 2038
ext4 (new inodes 34 bit seconds / 30-bit ns (but broken) 2038
f2fs 64-bit seconds / 32-bit ns never
29. Current filesystem with y2038 (2/3)
Overview of file systems [9]
29
file system time type expiration year
fat 7-bit years since 1980, 2s resolution 2107
freevxfs unsigned 32-bit seconds/u32 microseconds 2106
fuse 64-bit second/32-bit ns never
gfs2 u64 seconds/u32 ns never
hfs u32 seconds since 1904 2040
hfsplus u32 seconds since 1904 2040
hostfs timespec 2038
hpfs unsigned 32-bit seconds 2106
isofs 'char' year since 1900 (fixable) 2028
jffs2 unsigned 32-bit seconds 2106
jfs unsigned 32-bit seconds/ns 2106
logfs signed 64-bit ns 2262
minix unsigned 32-bit seconds 2106
ncpfs 7-bit year since 1980 2107
nfsv2,v3 unsigned 32-bit seconds/ns 2106
nfsv4 u64 seconds/u32 ns never
nfsd unsigned 32-bit seconds/ns 2106
nilfs2 u64 seconds/u32 ns never
ntfs 64-bit 100ns since 1601 30828
ocfs2 34-bit seconds/30-bit ns 2514
omfs 64-bit milliseconds never
pstore ascii seconds 2106
30. Current filesystem with y2038 (3/3)
Overview of file systems [9]
30
file system time type expiration year
qnx4 unsigned 32-bit seconds 2106
qnx6 unsigned 32-bit seconds 2106
reiserfs unsigned 32-bit seconds 2106
romfs fixed 1970
squashfs unsigned 32-bit seconds 2106
sysv unsigned 32-bit seconds 2106
ubifs u64 second/u32 ns never
udf u16 year 2038
ufs1 unsigned 32-bit seconds 2106
ufs2 signed 64-bit seconds/u32 ns never
xfs signed 32-bit seconds/ns 2106
32. Plan for VFS with y2038 [9]
32
Milestone # of patches Status
Targeted Kernel
release
Infrastructure patches for vfs_time and granularity fields 1.4.1 and 1.4.2 2 Done 4.7- rc1
Test time ranges beyond y2038 support, in memory timestamps match
with on disk -1.3.1 and 1.3.2
Xfs tests In progress 5/28/16
Replace CURRENT_TIME and CURRENT_TIME_SEC – 1.2.1 ~60
In Progress, waiting for 4.7 rc1
and repost previous.
4.8
Vfs_time patches – 1.4.3 ~40 In Progress, waiting for 4.7-rc1 4.8
Fill in right granularities and ranges for FS – 1.2.2 and 1.2.3 ~40 Yet to start 4.8
Expose FS granularities and ranges – 1.4.5 and 1.4.6 ~5 Yet to start 4.8
Tests to check the granularities and ranges – 1.3.3 and 1.3.4 Xfs tests Yet to start 6/10/16
Add policy for wrong granularities - 1.4.7 RFC for 4.9 Yet to start
Stat and utime changes – 1.4.8 RFC for 4.9 Yet to start
Tests for I_DIRTY_* flags and mount options -1.3.5 and 1.3.6 Xfs tests Yet to start 6/30/16
Transition vfs to 64 bit – 1.4.4 2
Ready, wait for other patches to
merge
4.10
33. Use monotonic clock instead
of wall time
33
y2038 unsafe.
an integer overflow might be occurred
36. User space
36
Kernel and GLIBC might be
incompatible
1
32-bit/ 64-bit use the same name of APIs
User need to define application code “_TIME_BITS=64” to get 64-bit
time support
32-bit time APIs are default setting on 32-bit systems
On 32-bit systems, if __USE_TIME_BITS64 is defined, time support is
provided for 64-bit time; otherwise, it is provided for 32-bit time.[5]
2
37. Definite & Debatable [5]
37
Definite
1. 64-bit time would be supported as a replacement of 32-bit time; user code (including libraries) would require
either 32-bit or 64-bit time support, with 32-bit remaining the default for now.
2. Any newly introduced function MUST be declared in the implementation, not user, namespace (see
https://sourceware.org/bugzilla/show_bug.cgi?id=14106).
3. Any newly introduced struct MUST have a name (see https://sourceware.org/bugzilla/show_bug.cgi?id=15766).
Debatable (Should be removed)
1. 64-bit time should only be supported if 64-bit file offsets are. This sounds like something totally unrelated, but
the underlying idea is to not multiply the possible combinations.
2. 32-bit time support will not be modified; 32-bit time functions which returns wrong results now will keep
returning wrong results after introduction of 64-bit time support. IOW, this design does not aim at trying to fix
existing 32-bit time support at all; any fix to the Y2038 problem will be within new 64-bit time support.
3. Make sure no change affects 64-bit platforms where time_t is already 64-bit (see
http://www.sourceware.org/ml/libc-alpha/2015-08/msg00038.html).
38. Time-related GLIBC APIs (1/3) [5]
38
Function Y2038-unsafe?
time_t YES, as time_t is 32-bit signed on 32-bit builds
double difftime (time_t time1, time_t time0) YES, as time_t is Y2038-unsafe
struct timeval { time_t tv_sec; long int tv_usec; } YES, as time_t is Y2038-unsafe
struct timespec { time_t tv_sec; long int tv_nsec; } YES, as time_t is Y2038-unsafe
clock_t clock(void)
No, return value is not clock time in seconds since the epoch but CPU time
in clock ticks
struct tms { clock_t tms_utime; clock_t tms_stime; clock_t tms_cutime; clo
ck_t tms_cstime; }
No, as all members are Y2038-safe
clock_t times(struct tms *buffer) No, as struct tms is Y2038-safe
time_t time (time_t *result) YES, as time_t is Y2038-unsafe
int stime (const time_t *newtime) YES, as time_t is Y2038-unsafe
struct timezone { int tz_minuteswest; int tz_dsttime; } No
struct timeval YES, as struct timeval depends on time_t which is Y2038-unsafe
int gettimeofday (struct timeval *tp, struct timezone *tzp) YES, as struct timeval is Y2038-unsafe
int settimeofday (const struct timeval *tp, const struct timezone *tzp) YES, as struct timeval is Y2038-unsafe
int adjtime (const struct timeval *delta, struct timeval *olddelta) YES, as struct timeval is Y2038-unsafe
struct timex YES, as struct timex depends on struct timeval which is Y0238-unsafe
int adjtimex (struct timex *timex) YES, as struct timex is Y0238-unsafe
struct tm { int tm_sec; int tm_min; ... } No, as all members are Y2038-safe
39. Time-related GLIBC APIs (2/3) [5]
39
Function Y2038-unsafe?
struct tm * localtime (const time_t *time) YES, as time_t is Y2038-unsafe
struct tm * localtime_r (const time_t *time, struct tm *resultp) YES, as time_t is Y2038-unsafe
struct tm * gmtime (const time_t *time) YES, as time_t is Y2038-unsafe
struct tm * gmtime_r (const time_t *time, struct tm *resultp) YES, as time_t is Y2038-unsafe
time_t mktime (struct tm *brokentime) YES, as time_t is Y2038-unsafe
time_t timelocal (struct tm *brokentime) YES, as time_t is Y2038-unsafe
time_t timegm (struct tm *brokentime) YES, as time_t is Y2038-unsafe
struct ntptimeval { struct timeval time; long int maxerror; long int esterr
or; }
YES, as struct timeval is Y2038-unsafe
struct ntptimeval
YES, as struct ntptimeval depends on struct timeval which is Y2038-
unsafe
ntp_gettime (struct ntptimeval *tptr) YES, as struct ntptimeval is Y2038-unsafe
struct timex { ... struct timeval time; ... } YES, as struct timeval time is Y2038-unsafe
int ntp_adjtime (struct timex *tptr) YES, as struct timex is Y2038-unsafe
char * asctime (const struct tm *brokentime) No, as struct tm is Y2038-safe
char * asctime_r (const struct tm *brokentime, char *buffer) No, as struct tm is Y2038-safe
char * ctime (const time_t *time) YES, as time_t is Y2038-unsafe
char * ctime_r (const time_t *time, char *buffer) YES, as time_t is Y2038-unsafe
size_t strftime (char *s, size_t size, const char *template, const struct tm *
brokentime)
No, as struct tm is Y2038-safe
size_t wcsftime (wchar_t *s, size_t size, const wchar_t *template, const str
uct tm *brokentime)
No, as struct tm is Y2038-safe
40. Time-related GLIBC APIs (3/3) [5]
40
Function Y2038-unsafe?
char * strptime (const char *s, const char *fmt, struct tm *tp
)
No, as struct tm is Y2038-safe
struct tm * getdate (const char *string) No, as struct tm is Y2038-safe
int getdate_r (const char *string, struct tm *tp) No, as struct tm is Y2038-safe
struct itimerval
YES, as struct timeval depends on struct timeval which is
Y2038-unsafe
int setitimer (int which, const struct itimerval *new, struct i
timerval *old)
YES, as struct itimerval is Y2038-unsafe
int getitimer (int which, struct itimerval *old) YES as struct itimerval is Y2038-unsafe
unsigned int alarm (unsigned int seconds) TBC depending on implementation
unsigned int sleep (unsigned int seconds) TBC depending on implementation
int nanosleep (const struct timespec *requested_time, stru
ct timespec *remaining)
YES, as struct timespec is Y2038-unsafe
41. Other GLIBC APIs (1/2) [5]
41
Function Y2038-unsafe?
Section 22.1 - Resource Usage
struct rusage { struct timeval ru_utime; struct timeval ru_st
ime; ... }
YES, as struct_timeval is Y2038-unsafe
int getrusage (int processes, struct rusage *rusage) YES, as struct_rusage is Y2038-unsafe
struct vtimes { struct timeval vm_utime; struct timeval vm_
stime; ... }
YES, as struct_timeval is Y2038-unsafe
int vtimes (struct vtimes *current, struct vtimes *child) YES, as struct_vtimes is Y2038-unsafe
Section 22.2 - Resource Limitation
rlim_t
No, as the value held is an amount of seconds, not an
absolute date
int sched_rr_get_interval (pid_t pid, struct timespec *interva
l)
No, as the value returned is a small interval, typically 150 µs)
42. Other GLIBC APIs (2/2) [5]
42
Function Y2038-unsafe?
Section 22.1 - Resource Usage
struct rusage { struct timeval ru_utime; struct timeval ru_stime;
... }
YES, as struct_timeval is Y2038-unsafe
int getrusage (int processes, struct rusage *rusage) YES, as struct_rusage is Y2038-unsafe
struct vtimes { struct timeval vm_utime; struct timeval vm_stim
e; ... }
YES, as struct_timeval is Y2038-unsafe
int vtimes (struct vtimes *current, struct vtimes *child) YES, as struct_vtimes is Y2038-unsafe
Section 22.2 - Resource Limitation
rlim_t
No, as the value held is an amount of seconds, not an absolute
date
int sched_rr_get_interval (pid_t pid, struct timespec *interval) No, as the value returned is a small interval, typically 150 µs)
43. 43
Conclusion
Be aware when coding AP/ driver with 32-bit
machine
Don’t use y2038-unsafe value/ structure in driver
Don’t use y2038-unsafe value/ structure in application
1
2
3
The solution is not confirmed yet
Keep a close eye on tracking
Kernel patch
GLIBC patch
Upgrade existence AP/ driver
The assignment of Job Factors should be completed by the junior
R&D – this bug will hurt their supplemental retirement planning
45. 45
References
1. 2038 is closer than it seems
https://lwn.net/Articles/599580/
2. The end of time
http://elinux.org/images/6/6e/End_of_Time_--
_Embedded_Linux_Conference_2015.pdf
3. CVS: cvs.openbsd.org: src
http://marc.info/?l=openbsd-cvs&m=137637321205010&w=2
4. Pondering 2038
https://lwn.net/Articles/563285/
5. Third draft of the glibc Y2038 design document
https://sourceware.org/glibc/wiki/Y2038ProofnessDesign?rev=63
6. y2038
http://kernelnewbies.org/y2038
7. Heading toward 2038-safe filesystems
https://lwn.net/Articles/672576/
8. Ext4 Disk Layout
https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#Inode_Timestamps
9. y2038/vfs
http://kernelnewbies.org/y2038/vfs
10. fs: ext4: Use current_fs_time() for inode timestamps
https://patchwork.kernel.org/patch/9166291/
11. System call conversion for year 2038
https://lwn.net/Articles/643234/
12. isdn: Use ktime_t instead of 'struct timeval
https://patchwork.kernel.org/patch/7516841/
13. net: ipv4: tcp_probe: Replace timespec with timespec64
https://patchwork.ozlabs.org/patch/589342/
14. posix timers:Introduce the 64bit methods with ti
http://thread.gmane.org/gmane.linux.kernel.cross-arch/27249
15. converting system calls to 64-bit time_t
https://lists.linaro.org/pipermail/y2038/2015-May/000233.html
OpenBSD can do this because it is a self-contained system, with the kernel and user space built together out of a single repository.
openBSD kernel 跟 user space 是在一起的
但 Linux 是分開且要 ABI 兼容
舊的東西 – 修正且 compatible
新的東西 – 要修正
修正目前的東西, 並兼容
1. 使用相對時間而不是絕對時間
code that is used for CONFIG_COMPAT_TIME is shared between 32-bit and 64-bit architectures that provide support for existing 32-bit binaries with 32-bit time_t
b) code that is defined under CONFIG_COMPAT is only used on 64-bit machines to provide support for 32-bit binaries, either system calls that do not use time_t or (rare) that use a 64-bit time_t in compat mode.
fs/ext4/ext4.h
fs/ext4/ext4.h
fs/ext4/ext4.h
fs/ext4/ext4.h
fs/ext4/ext4.h
The VFS layer, on the other hand, has its own timestamp handling for its in-memory inodes and other structures. It will need to change too, but there are various carts and horses that need to be aligned correctly before that can happen. [7]